Я пытаюсь преобразовать некоторые таблицы mysql с latin1 в utf8. Я использую следующую команду, которая, похоже, работает в основном.Преобразование таблиц mysql с latin1 в utf8
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Однако на одной таблице я получаю сообщение об ошибке с дублирующимся ключом. Это вызвано уникальным индексом в поле «имя». Кажется, что при преобразовании в utf8 любые «специальные» символы индексируются как их прямой английский эквивалент. Например, уже есть запись с именем поля «Dru». При преобразовании в utf8 запись с «Дру» считается дубликатом. То же самое с «Патриком» и «Påtrìçk».
Вот как воспроизвести проблему:
CREATE TABLE `example` ( `name` char(20) CHARACTER SET latin1 NOT NULL,
PRIMARY KEY (`name`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO example (name) VALUES ('Drü'),('Dru'),('Patrick'),('Påtrìçk');
ALTER TABLE example convert to character set utf8 collate utf8_general_ci;
ERROR 1062 (23000): Duplicate entry 'Dru' for key 1