Windows中mysql默认大小写不敏感,不区分大小写,在建数据库及数据库表时相应的库名和表名自动变成小写保存,记录将mysql更改为大小写敏感,过程如下:
1.在配置文件(my.ini)中设置参数lower_case_table_names = 2放在[mysqld]下
lower_case_table_names = 0 表名存储为给定的大小,比较区分大小写
lower_case_table_names = 1(默认值)表名存储是小写的,比较的时候不区分大小写
lower_case_table_names = 2 表名存储为给定的大小,比较的时候是小写的
(设置之后保存,在电脑“服务”中右键重启mysql,用最笨的方法,新建数据库,名字写大写并保存,发现没有用)
2.在第一步基础上(设置完配置文件后不需要重启),再重新对mysql初始化,并在初始化时候设置lower_case_table_names = 2参数:
(1)将mysql中与bin目录在同一级的data文件夹中的数据备份,然后清空
(2)以管理员方式打开cmd
(3) 进入安装mysql的bin目录下
(4)进入之后,先移除之前的mysql服务,注意命令中第一个单词是“mysqld”
mysqld --remove mysql
(5)输入如下命令,开始初始化,出现框住的内容表示初始化成功了,且data文件夹中有了初始化的文件,(第二个框的内容是初始密码,不包括冒号后的空格,初始密码别弄丢,后面会用)
mysqld --initialize --lower-case-table-names=2 --console
(6)下载mysql服务,下载成功后启动服务
mysqld --install
net start mysql
(7)登录mysql
mysql -uroot -p
Enter password后面是需要输入的初始化密码,(没复制进去,自己手动输进去的,注意大小写,别输错,注意是“0”还是“o”,“1”还是大写“I”)
(8)设置新密码,单引号内填入自己的新密码
alter user 'root'@'localhost' identified by '';
遇到的问题:
1.
解决方法:mysqld --remove mysql 或者sc delete mysql
2.遇到好多次,尝试好多方法都没用,刚开始还以为是设置lower_case_table_names 的原因,甚至重新下载了mysql依然没解决,最后重新初始化后解决了
3.lower_case_table_names设置为2只能在存储表名、数据库名时保存为对应的大小写,比较时仍然不区分大小写。尝试通过上述步骤将lower_case_table_names设置为0,但是失败了,报了以下错误:
错误显示,在my.ini 配置文件中设置了 lower_case_table_names=0,表示使用大小写敏感的表名,但数据目录位于一个不区分大小写的文件系统上,这是不支持的组合。
然后查了一下“windows中支持大小写敏感的文件系统有哪些”
答案是,Windows 操作系统中,通常默认使用的是大小写不敏感的文件系统(例如 NTFS)。然而,有一些第三方文件系统可以在 Windows 中提供大小写敏感的支持。以下是一些支持大小写敏感的文件系统:
-
ReFS(Resilient File System): 这是微软引入的一种高级文件系统,虽然默认情况下是大小写不敏感的,但在某些配置下可以启用大小写敏感的功能。
-
CIFS(Common Internet File System): CIFS 是用于网络共享的协议,它可以在某些情况下支持大小写敏感的文件系统。但这不是文件系统本身,而是一种协议。
-
Case-Sensitive Linux 文件系统: 如果你在 Windows 上运行 Linux 子系统(WSL),你可以在该子系统中使用大小写敏感的文件系统。