這兩天想要初始化一批測試數(shù)據(jù)渗磅,突然發(fā)現(xiàn)頻繁出現(xiàn)用戶名重復(fù)的問題医清,但是代碼已經(jīng)做了重復(fù)用戶名的集合剔除處理,后面研究發(fā)現(xiàn)是Mysql大小寫導(dǎo)致的問題
遇到這種情況贫导,我們首先要了解一下,為什么MySQL沒有區(qū)分大小寫了寨昙。這個就跟數(shù)據(jù)庫屬性 [數(shù)據(jù)庫排序規(guī)則] 有關(guān)系了
從MySQL 8.0.1版本開始抬驴,支持_cs(case sensitive collation)排序規(guī)則陕悬。在此版本之前芙委,MySQL僅支持_bin(binary collation)排序規(guī)則侧啼,它是區(qū)分大小寫的)
*_bin: 表示的是binary case sensitive collation,區(qū)分大小寫的二進制排序規(guī)則
*_cs: 表示的是case sensitive collation滴须,區(qū)分大小寫的排序規(guī)則
*_ci: 表示的是case insensitive collation,不區(qū)分大小寫的排序規(guī)則
解決辦法:
解決方案一:
修改數(shù)據(jù)庫排序規(guī)則誓竿,明確選擇 *_bin 或者 *_cs 的
解決方案二:
使用關(guān)鍵字BINARY修飾
SELECT COUNT( * ) FROM admin WHERE BINARY user_name = 'rO';
解決方案三:
修改數(shù)據(jù)庫字段屬性為varbinary數(shù)據(jù)類型