2010-02-18 23 views
3

似乎当我改变一个mysql表(在utf-8表/列上)时,它会返回一个重复的输入错误。mysql结果是“特殊字符” - 不敏感

例子:

ALTER TABLE name ADD UNIQUE(name) 

错误:

Duplicate entry 'Adé' for key 'name_UNIQUE' 

我想这是因为我的数据库中后续的行

Ade, Adé 

是否有可能改变与独特的表特殊字符?

谢谢

鲍勃

+0

+1好问题,欢迎来到SO – Sarfraz 2010-02-18 09:49:18

回答

3

您需要设置上的collation列(或整个表或数据库 - 我不认为连接范围将为唯一工作约束)到尊重“e”和“é”之间差异的方法。请参阅here,以获取不同排序规则设置可能具有的效果示例。

假设你的字符集是utf8,你可以用它来避免对你的唯一约束越来越误报会utf8_bin,其中两个字符串,除非它们是相同的字符串根本不比较等于最安全的排序规则。尽管如此,你需要注意unicode标准化之类的东西,否则你最终可能会得到两个不同的标准化形式的字符序列相同的键,这使得它们不相等。只需注意一点小事。