根据 《mysql 8.0.17,初始化安装,my.ini,mysql8下载》安装部署成功后的MySQL8,不区分大小写;
执行SQL:
SELECT * FROM student where memo='a'
会将 memo 为 'A' 和 'a' 的数据全部查询出来;
如果需要区分大小写,怎么办?有个参数 lower_case_table_names ,将这个参数设置在[mysql]下方
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
# 设置:0=则区分大小写;1=则不区分大小写
lower_case_table_names=0
[client]
因为Windows下默认就是1,不区分大小写,所以改的话,只能改成2,不过即使你改了后,还是会报错,不能启动
原因是:你已经初始化MySQL,也就是关联的数据目录下已经生成文件,所以不能再修改;
即:lower_case_table_names 参数,只能在初始化的时候使用,如下:
--initialize --lower-case-table-names=0
解决办法一:停止MySQL服务、清空数据目录下文件、重新初始化
解决办法二:将需要区分大小写列的排序规则设置为对应的*_bin,那么这一列也会区分大小写,如下:
1、设置已有列,直接选择对应的*_bin 如下图:
2、创建表的时候,在对应列后加上 标识:
CREATE TABLE `study`.`test` (
`tes_id` int(11) NOT NULL AUTO_INCREMENT,
`memo` varchar(255) binary NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`tes_id`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = gbk COLLATE = gbk_chinese_ci ROW_FORMAT = Dynamic;
注意,不要进行不同类型之间的比较,如果需要比较,可以使用cast(2 as CHAR)函数,转换成字符串;