今日在做用户的登陆的时候,偶然发现了用户名没有进行区分大小写,一开始我以为是程序中使用了lower或者upper这种改变字符串大小写的函数,然后把程序阅读了一遍,并没有发现相关的函数,最后把sql语句拿去执行一下,发现用大写的当作条件去查询,结果条件为小写的也被查询了出来,如图所示:
查询了资料后发现两种解决方式:
1.将字段的字符集设置成utf8_bin
命令参考:ALTER TABLE ts_user MODIFY COLUMN ACCOUNT VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
2.查询语句中在需要区分大小写的字段前面加上binary
查询语句参考:select * from ts_user where binary ACCOUNT='ADMIN'