linux中mysql区分大小写
前言
最近项目中遇到一个问题,有点工作流的模块,它有自己的表,启动后会检查数据库中是否有它自己的表,没有的话会自动创建,启动该模块后,发现创建了一堆全部大写命名的表,而且小写命名的表是存在的,第一时间想到的区分大小写问题,因为之前用的windows上的mysql没问题,这次用的是centos上mysql,所以linux上装的mysql默认是区分大小写的
修改
首先登录mysql,控制台或者navicat都可以,执行下面命令查看当前是否区分大小写
1 | show variables like '%case%'; |
lower_case_table_name值:0:区分大小 1:不区分大小写,它是只读变量,mysql启动之后无法直接更改,只能去my.conf中修改,首先找到mysq.ini,找到**[mysqld]**部分添加配置,不要写错位置,否则轻则修改无效,重则mysql无法启动。
my.cnf一般在/etc/mysql/my.cnf中,修改后如下
1 | #Ubuntu下配置文件是/etc/mysql/mysql.conf.d/mysqld.cnf |
改完后重启mysql
1 | #ubuntu |
总结
- 在linux中数据库名与表名默认是严格区分大小写的;
- 在linux中表的别名是严格区分大小写的;
- 在linux中列名与列的别名在所有的情况下均是忽略大小写的;
- 在linux中变量名也是严格区分大小写的;
- 在Windows下都不区分大小写。
注意:
经过测试,docker命令直接创建的话需要在命令中最后添加该参数配置,否则一经启动,无法更改,创建并运行命令如下
1 | docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123445 mysql:latest --lower-case-table-names=1 |