Estoy tratando de convertir algunas tablas de mysql de latin1 a utf8. Estoy usando el siguiente comando, que parece funcionar en su mayoría.Convertir tablas de mysql de latin1 a utf8
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Sin embargo, en una tabla me sale un error sobre una entrada de clave duplicada. Esto es causado por un índice único en un campo de "nombre". Parece que al convertir a utf8, cualquier carácter "especial" se indexa como su equivalente en inglés. Por ejemplo, ya hay un registro con un valor de campo de nombre de "Dru". Al convertir a utf8, un registro con "Drü" se considera duplicado. Lo mismo con "Patrick" y "Påtrìçk".
Aquí es cómo reproducir el problema:
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