У меня есть пользовательская таблица, в которой существует столбец, названный 'псевдонимом', utf-8 закодирован, varchar (20), таблица находится в InnoDB. Существует 2 записи, у каждого есть псевдоним = 'gunni' и другой псевдоним = 'günni'. Когда я пытался применить уникальный индекс на этот столбец, mysql дал мне эту ошибку:
ОШИБКА 1062 (23000) в строке 263: Дублирующаяся запись 'gunni' для ключевых 2
Я проверил данные существует только одна запись, которая имеет имя 'gunni', и если я изменяюсь, запись 'günni' на что-то еще затем применяют уникальный индекс снова, все хорошо работает.
Каким образом 'günni' и 'gunni' быть дубликатами? Вот шестнадцатеричные значения для них, я получаю это с шестнадцатеричным числом mysql () функция:
мешковина-> 67756E6E69
günni-> 67C3BC6E6E69
Они очевидно отличаются. Каким образом mysql рассматривает эти 2 как то же? Или есть ли что-то, что я не знаю об уникальных индексах? Или даже, это могло быть mysql ошибкой?
Это из-за используемой вами кодировки.
Все, что заканчивается на _ci, не чувствительно к регистру (а также не чувствительно к ударению/умлауту). Так что да, MySQL будет считать "günni" и "gunni" одним и тем же, если вы не измените collation.
Документы: http://dev.mysql.com/doc/refman/5.0/en/charset-table.html