这两天想要初始化一批测试数据,突然发现频繁出现用户名重复的问题,但是代码已经做了重复用户名的集合剔除处理,后面研究发现是Mysql大小写导致的问题
遇到这种情况,我们首先要了解一下,为什么MySQL没有区分大小写了。这个就跟数据库属性 [数据库排序规则] 有关系了
从MySQL 8.0.1版本开始,支持_cs(case sensitive collation)排序规则。在此版本之前,MySQL仅支持_bin(binary collation)排序规则,它是区分大小写的)
*_bin: 表示的是binary case sensitive collation,区分大小写的二进制排序规则
*_cs: 表示的是case sensitive collation,区分大小写的排序规则
*_ci: 表示的是case insensitive collation,不区分大小写的排序规则
解决办法:
解决方案一:
修改数据库排序规则,明确选择 *_bin 或者 *_cs 的
解决方案二:
使用关键字BINARY修饰
SELECT COUNT( * ) FROM admin WHERE BINARY user_name = 'rO';
解决方案三:
修改数据库字段属性为varbinary数据类型