根据 《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)函数,转换成字符串;