设置MySQL数据库不区分大小写
作者:快盘下载 人气:我们大家可能都碰到过这种情况:在Linux下,mysql的表名区分大小写,而在Windows下是不区分,从Windows下导出的数据脚本中使用的是小写,而Hibernate生成的SQL中表名是大写的,所以查不出数据。如下,我的一个Windows下的项目移植到Linux环境中就因为MySQL严格区分大小写问题报错:
这个时候怎么办呢,显然改程序是不行的,时间上也不允许,所以只能设置MySQL数据库不区分大小写了,大家看以下步骤:
1、查询MySQL是否设置了区分大小写
show variables like "%case%";
其中lower_case_table_names代表了:0是区分大小写; 1是不区分大小写。显然我这个MySQL是区分大小写的。
2、解决方法
一 Ubuntu环境下:
vim /etc/mysql/my.cnf
在这个文件中的[mysqld]的后面加lower_case_table_names=1
注意:一定要在mysqld下面加上这个语句,别的下面不起作用!!!
然后重启MySQL环境即可。
一、启动方式 1、使用 service 启动:service mysqld start 2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start 3、使用 safe_mysqld 启动:safe_mysqld& 二、停止 1、使用 service 启动:service mysqld stop 2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop 3、mysqladmin shutdown 三、重启 1、使用 service 启动:service mysqld restart 2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart
二 其他环境下
如果上面设置的不行,可以试试以下路径:
echo "lower_case_table_names=1" >> /etc/mysql/mysql.conf.d/mysqld.cnf
即寻找/etc/mysql/mysql.conf.d/mysqld.cnf这个文件,后面加上lower_case_table_names=1即可。
更改设置之后的效果:
已经不区分大小写了:
拓展知识
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的;
MySQL在Windows下都不区分大小写。
加载全部内容