【mysql字段值大小写不敏感问题】

问题描述

测试人员在测试注册功能时,提示账号JackyWang已存在。

原因分析:

后台查看数据库,用户表中并没有用户JackyWang,但是存在jackywang,大概率是mysql数据库大小写不敏感,将小写的jackywang等同于大写的JackyWang了。

解决方案:

经查看相关资料,mysql可能因为编码格式或者配置文件修改大小写敏感配置。

1、查看当前的编码格式信息
可以通过命令SHOW VARIABLES LIKE 'character_set_server’查看字符格式,不过不够详细。比如UTF8的编码格式下,默认是utf8_general_ci,也可以是utf8mb4_bin(注意这里提到了这两种编码,后面要考)
在这里插入图片描述
通过命令show full columns from 表名,可以查看表中各字段的详细编码信息:
在这里插入图片描述
笔者用的是HeidiSQL客户端,可以双击表,直接查看表结构即可显示详细编码信息:

在这里插入图片描述
2、修改编码格式实现大小写敏感问题。
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE UTF8MB4_BIN;
(备注:执行前最好备份所在表数据,出现乱码或者未知情况时还能还原数据,笔者采用此方案,执行完并无异常)。

如果是要修改数据库:
ALTER DATABASE 库名 CHARACTER SET utf8mb4 COLLATE UTF8MB4_BIN;

3、设置默认大小写敏感配置
在配置文件/etc/my.cnf中[mysqld]下添加lower_case_table_names = 1
vim /etc/my.cnf

在这里插入图片描述

4、不同环境,不同版本会有差异,大体思路是类似的。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值