使用COLLATE在UNIQUE列中进行重音冲突,例如: utf8_swedish_ci

时间:2014-01-06 12:15:00

标签: mysql unique collation

我对具有特定排序规则的UNIQUE键列中的重音有疑问。

我有字符集 utf8 的表格。我有列姓氏,其中collat​​e是 utf8_czech_ci - 它不是UNIQUE键。

`surname` VARCHAR(50) NULL DEFAULT '0' COMMENT 'Surname' COLLATE 'utf8_czech_ci'

在此表中,我存储了两个测试名称“ i ”和“í”LATIN SMALL LETTER I WITH ACUTE。

问题

当我尝试将此列 UNIQUE 时,我收到以下错误消息

SQL Error (1062): Duplicate entry 'í' for key

请注意,当我将'surname'的分页更改为 utf8_bin 时,可以创建UNIQUE键。其他归类如<​​strong> utf8_swedish_ci,utf8_spanish_ci,utf8_polish_ci 会返回相同的错误,例如 utf8_czech_ci

问题

我认为整理只影响返回记录的顺序而不影响数据值的真正“意义”。不管是否整理,不同的数据应该存储为不同且唯一的 - 或者不是(?)有人可以解释这种行为吗?

我的系统

我在WinXP上安装了MySQL 5.6。 MySQL的字符设置是:

mysql> show variables like '%character_set%';

"character_set_client"  "utf8"
"character_set_connection"  "utf8"
"character_set_database"    "utf8"
"character_set_filesystem"  "binary"
"character_set_results" "utf8"
"character_set_server"  "utf8"
"character_set_system"  "utf8"
"character_sets_dir"    "c:\Program Files\MySQL\MySQL Server 5.6\share\charsets\"

感谢您的帮助。

0 个答案:

没有答案