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,不好看,但都能用:

 

 

 

posted @ 2024-05-27 11:42  海宏软件  阅读(74)  评论(0编辑  收藏  举报