SQL UNIQUE键不将国际字符视为不同

时间:2014-09-12 07:21:56

标签: mysql sql utf-8 character-encoding unique

我刚刚导出了一个MySQL数据库(在LATIN1中)并在此过程中转换为UTF-8,并导入到较新的系统中。

它似乎没问题,但我确实遇到了一些UNIQUE键出现错误的情况,因为两个条目仅在国际字符中有所不同,例如

“åle”在“ale”中被认为不是唯一的

我在文档中没有找到任何提及字符集或编码的UNIQUE键。

如何配置数据库以确保它认为这些字母是唯一的?

1 个答案:

答案 0 :(得分:2)

这取决于相关列的“COLLATION”设置。您可以通过“在yourtablename中显示完整列”来查看当前的排序规则。

例如,“utf8_general_ci”认为“ale”,“åle”和“ALE”相同。根据您的使用情况,“utf8_swedish_ci”或“utf8_bin”之类的内容可能更合适。请注意,更改排序规则也会更改“.. wherecolumn = value”匹配的内容,以及“...按您的列排序”的顺序。

您可以使用“ALTER TABLE”(对于单个列)或数据库范围更改排序规则。手册中的更多信息:http://dev.mysql.com/doc/refman/5.5/en/globalization.html