我有一个users表,其中有一个名为‘昵称’的列,utf-8编码,varchar(20),表在InnoDB中。有两个唱片,一个有个昵称= 'gunni‘,另一个叫做= 'günni’。当我试图将唯一索引应用于本专栏时,mysql给出了以下错误:
错误1062 (23000),在第263行:重复输入'gunni‘为键2
我检查了数据,只有一个记录的名字是'gunni',如果我将'günni‘记录更改为其他的东西,那么再次应用唯一的索引,一切都很好。
为什么'günni‘和'gunni’是复制的?下面是它们的十六进制值,我用mysql的十六进制()函数获得了这个值:
gunni -> 67756E6E69
günni -> 67C3BC6E6E69
很明显他们不一样。为什么mysql将这2视为相同的呢?还是有什么是我不知道的唯一索引?甚至,这可能是mysql的错误吗?
发布于 2010-07-26 05:30:07
这是因为你所用的校对。
任何以_ci结尾的都是不区分大小写的(也是重音/不敏感的)。所以是的,MySQL会把"gunni“和”gunni“看作同样的事情,除非你改变了你的校对。
博士:http://dev.mysql.com/doc/refman/5.0/en/charset-table.html
https://stackoverflow.com/questions/3332387
复制相似问题