Je suis en train de convertir des tables mysql de latin1 en utf8. J'utilise la commande suivante, qui semble fonctionner principalement.Conversion de tables mysql de latin1 en utf8
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Cependant, sur une table, j'obtiens une erreur sur une entrée de clé en double. Ceci est dû à un index unique sur un champ "nom". Il semble que lors de la conversion en utf8, tous les caractères "spéciaux" sont indexés comme leur équivalent anglais. Par exemple, il existe déjà un enregistrement avec une valeur de champ de nom "Dru". Lors de la conversion en utf8, un enregistrement avec "Drü" est considéré comme un doublon. La même chose avec "Patrick" et "Påtrìçk".
Voici comment reproduire le problème:
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