windows下mysql修改表名大小写参数lower_case_table_names,需要initialize才生效。测试大小写都可以执行,默认以小写查询
第一种办法:尝试修改文件my.ini,发现改了重启不管用(没有my.ini文件新建):
C:\Program Files\MySQL\MySQL Server 8.0>notepad my.ini
[mysqld] lower_case_table_names=2
第二种办法:尝试初始化mysql服务,带上参数。注意,会清空数据库,所以
务必先备份数据!!!
参考:
https://blog.csdn.net/cccgo68/article/details/132295123
1.先在mysql安装目录下新建【my.ini】文件内容填写如下,已经有my.ini文件的直接修改lower_case_table_names=参数为2。
[mysqld] lower_case_table_names=2
2.C:\Program Files\MySQL\MySQL Server 8.0\bin>net stop mysql80
MySQL80 服务正在停止.
MySQL80 服务已成功停止。
3.C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --remove mysql80
Service successfully removed.
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --initialize --lower_case_table_names=2 --console
2024-05-27T03:26:20.836341Z 0 [System] [MY-013169] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.37) initializing of server in progress as process 18188
2024-05-27T03:26:20.877791Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-05-27T03:26:22.162748Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-05-27T03:26:27.121702Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: BObXz9,gYDF;
上面红字是root的临时密码。
4.C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --install mysql80
Service successfully installed.
5.C:\Program Files\MySQL\MySQL Server 8.0\bin>net start mysql80
mysql80 服务正在启动 ..
mysql80 服务已经启动成功。
6.查看lower_case_table_names 属性。
show variables like 'lower%';
参数说明:
lower_case_table_names: 此参数不可以动态修改,必须重启数据库
lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的
lower_case_table_names=2, 表名存储为给定的大小写但是比较的时候是小写的
捎带记录一下,oceanbase兼容mysql并不能完全兼容,sql脚本需要替换一下:
1、utf8mb4_0900_ai_ci 换成 utf8_general_ci
2、utf8mb4 换成 utf8
----------------------------------------------------测试------------------------------------------------------
测试改了之后大小写的、没改的,能否正常用。默认是都以小写执行。测试SQL脚本:
select * from Subject ; select * from subject ; select * from `Subject` ; select * from `subject` ;
改了之后的,表名是大小写的:Subject。
没改的,都是小写的表名subject,不好看,但都能用: