【发布时间】:2015-10-30 07:37:52
【问题描述】:
我有一张这样的桌子
CREATE TABLE `mb1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `u_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
然后我插入两行
insert into mb1(name) values('K'),('K');
注意,第二个K是unicode字符
+------+-----------+
| name | hex(name) |
+------+-----------+
| K | 4B |
| K | EFBCAB |
+------+-----------+
为什么它们会导致唯一键冲突?它们在 utf8mb4 中不是不同的字符吗?
去掉COLLATE utf8mb4_unicode_ci后,问题就消失了。
【问题讨论】:
-
如果您需要大小写折叠,但需要区分重音,请通过bugs.mysql.com 提出请求。