Sha*_*awn 9 mysql indexing mysql-error-1062
我有一个用户表,其中有一个名为'nickname'的列,utf-8编码,varchar(20),该表在InnoDB中.有2个记录,其中一个昵称='gunni',另一个昵称='günni'.当我尝试将唯一索引应用于此列时,mysql给了我这个错误:
第263行的错误1062(23000):键2的重复输入'gunni'
我检查了数据,只有一个记录名为'gunni',如果我将'günni'记录改为其他记录,那么再次应用唯一索引,一切正常.
为什么'günni'和'gunni'会重复?这是他们的十六进制值,我用mysql的hex()函数得到这个:
gunni - > 67756E6E69
günni - > 67C3BC6E6E69
他们显然是不同的.为什么mysql会将这两个视为同样的?或者有什么我不知道的独特索引?或者甚至,这可能是一个mysql错误?
Nul*_*ion 10
这是因为你正在使用的整理.
以_ci结尾的任何内容都不区分大小写(并且重音/变音不敏感).所以,是的,MySQL会认为"günni"和"gunni"是一样的,除非你改变你的整理.
文档:http://dev.mysql.com/doc/refman/5.0/en/charset-table.html