我想將一些mysql表從拉丁文轉換爲utf8。我正在使用下面的命令,這似乎主要工作。將MySQL表從拉丁文轉換爲utf8
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
但是,在一張桌子上,我得到一個有關重複鍵輸入的錯誤。這是由「名稱」字段上的唯一索引造成的。看起來,轉換爲utf8時,任何「特殊」字符都被索引爲直接英語等值。例如,已經有一個名爲「Dru」的記錄。當轉換爲utf8時,帶有「Drü」的記錄被認爲是重複的。與「Patrick」和「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