【发布时间】:2015-10-05 01:42:36
【问题描述】:
我在一列上有一个唯一键。当我插入a 然后å 它会抛出一个错误:
PHP 致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[23000]:完整性约束违规:1062 Duplicate entry 'å' for key 'constraint-1'' in ..
....但是 a 和 å 是不同的 UTF 字符 - 那么发生了什么......?
表有 DEFAULT CHARSET=utf8mb4 和 utf8mb4_unicode_ci 排序规则。
【问题讨论】:
-
MySQL 对定义排序顺序和字母等效性的每一列应用排序规则。对于应用于此列的排序规则,这两个字母被认为是等效的。
-
@HoboSapiens 我认为排序规则仅用于排序,而插入唯一重要的是字符集??
-
你错了。请参阅我链接到的问题。您需要使用
utf8_bin排序规则来区分这些字符。您可以使用 COLLATE 子句覆盖默认排序规则。关于这个主题的 MySQL 参考是 here
标签: php mysql unicode utf-8 utf8mb4