MySQL результат не зависит от «специального символа» - PullRequest
3 голосов
/ 18 февраля 2010

Кажется, что когда я изменяю таблицу mysql (в таблице / столбце utf-8), уникальную, она возвращает ошибку повторяющегося ввода.

Пример:

ALTER TABLE name ADD UNIQUE(name)

ошибка:

Duplicate entry 'Adé' for key 'name_UNIQUE'

Я думаю, что это из-за следования строк в моей базе данных

Ade, Adé

Можно ли изменить таблицу, уникальную с помощью специальных символов?

Спасибо,

Bob

Ответы [ 2 ]

3 голосов
/ 18 февраля 2010

Вам необходимо установить сопоставление для столбца (или всей таблицы или базы данных - я не думаю, что область соединения будет работать для уникальных ограничений) на значение, которое учитывает разницу между "e "и" é ". См. здесь для примера эффектов, которые могут иметь различные параметры сортировки.

Если предположить, что ваша кодировка равна utf8, то самое безопасное сопоставление, которое вы можете использовать, чтобы избежать ложных срабатываний для вашего уникального ограничения, будет utf8_bin, в котором две строки никогда не сравниваются равными, если они не являются идентичной строкой. Вам нужно быть осторожным с такими вещами, как нормализация юникода, иначе вы можете получить два ключа с одинаковой последовательностью символов в разных формах нормализации, что делает их неравными. Просто мелочь, за которой нужно следить.

1 голос
/ 18 февраля 2010

Вместо использования оператора = вы можете использовать LIKE или LIKE BINARY

Подробнее здесь.

...