Sto provando a convertire alcune tabelle mysql da latin1 a utf8. Sto usando il seguente comando, che sembra funzionare principalmente.Conversione di tabelle mysql da latin1 a utf8
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Tuttavia, su un tavolo viene visualizzato un errore relativo a una voce di chiave duplicata. Questo è causato da un indice univoco su un campo "nome". Sembra che quando si converte in utf8, qualsiasi carattere "speciale" venga indicizzato come equivalente inglese diretto. Ad esempio, esiste già un record con un valore del campo nome "Dru". Durante la conversione in utf8, un record con "Drü" è considerato un duplicato. Lo stesso con "Patrick" e "Påtrìçk".
Ecco come riprodurre il 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