我有一张这样的桌子
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 后,问题就消失了。