解决唯一索引不区分大小写的问题
问题背景:
表中有一个联合唯一索引(supplier_name, create_date)。
在插入的过程中,(ASD, 2022-02-03) 和 (asd, 2022-02-03)会被识别成同一个索引。原因是 唯一索引不区分大小写。
解决方案
将索引字段 supplier_name 的排序规则从 utf8_general_ci 修改为 utf8_bin。
ALTER TABLE `table_name` MODIFY supplier_name varchar(255) COLLATE utf8_bin comment '供应商名称';
分析
每种字符集都有一个默认的排序规则。
utf8 字符集的默认排序方式是 utf8_general_ci,即不区分大小写(case insensetive)。
utf8_bin 排序规则区分大小写,也区分重音字符。
-- 查看表所有字段的type,collation,key等信息
show full columns from `table_name`;
本作品采用《CC 协议》,转载必须注明作者和本文链接