MySQL 设置不区分大小写

Linux系统下 MySQL 设置不区分大小写

lower_case_table_names

参数详解:

lower_case_table_names=1

其中0:区分大小写,1:不区分大小写

查询当前设置:

mysql> show variables like '%lower%' ;
+ ------------------------+-------+
| Variable_name          | Value |
+ ------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+ ------------------------+-------+
2 rows in set (0.01 sec)

lower_case_file_system
表示当前系统文件是否大小写敏感,只读参数,无法修改
ON  大小写不敏感 
OFF 大小写敏感 

lower_case_table_names
表示表名是否大小写敏感,可以修改
lower_case_table_names = 0时,mysql会根据表名直接操作,大小写敏感。 
lower_case_table_names = 1时,mysql会先把表名转为小写,再执行操作。

网上大多数解决方案是:

1、使用root权限登录,修改配置文件 /etc/my.cnf
2、在[mysqld]节点下,加入一行: lower_case_table_names=1

3、重启MySQL : service mysqld.server restart

    在部分版本的MySQL下,如果之前有大写的表,修改参数后改表会提示不存在,而且也无法修改,应用程序就操作不了。

问题剖析:

如果在lower_case_table_names=0情况下已经导入了大量的表和数据,表名有大写,有小写,此时再换成lower_case_table_names=1会出错。

解决办法:在lower_case_table_names=0时,将表名全部改成小写的;如果有数据库名称中存在大写字母,也需同时改名,改名方法为新建一个小写的数据库, 再改表名。(最方便的是直接使用MySQL界面客户端修改)

全部改名之后,再设置lower_case_table_names=1,重启MySQL。

更改后查询确认:

mysql> show variables like '%lower%' ;
+ ------------------------+-------+
| Variable_name          | Value |
+ ------------------------+-------+
| lower_case_file_system | ON   |
| lower_case_table_names | 0     |
+ ------------------------+-------+
重启测试

猜你喜欢

转载自blog.csdn.net/qq_35965337/article/details/80250150