首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将MySQL表从latin1转换为utf8

将MySQL表从latin1转换为utf8
EN

Stack Overflow用户
提问于 2010-11-02 00:04:36
回答 1查看 12.6K关注 0票数 16

我正在尝试将一些mysql表从latin1转换为utf8。我正在使用下面的命令,它似乎基本上是有效的。

ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

然而,在一个表中,我得到了一个关于重复键条目的错误。这是由"name“字段上的唯一索引引起的。似乎当转换为utf8时,任何“特殊”字符都被索引为其直接的英语对等字符。例如,已经有一个名称字段值为"Dru“的记录。转换为utf8时,带有"Drü“的记录被视为重复记录。“帕特里克”和“帕特里克”也是如此。

以下是如何重现该问题的方法:

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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4070642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档