您的位置:首页 > 数据库 > MySQL

MySQL 表名大小写区分

2015-09-23 18:42 453 查看
最近要将生产环境阿里云上的Mysql库备份出来,放到另一份云上,都是linux系统中,发现导入成功后怎么都查不到数据,但是导入在本地的window环境中,是能够查到数据的,后来仔细排查,才发现,MySQL表名在linux环境中是区分大小写的,可通过配置忽略表明大小写,而在window环境中是不区分大小写的,故在此处记录下。下面是网上参考的文章:

查看大小写区分
mysql> show variables like "%case%";
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   | 
| lower_case_table_names | 0     | 
+------------------------+-------+
2 rows in set (0.00 sec)

今天郁闷死了,在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢?
  后来请教了一个老师才搞定,原来是LINUX下的MYSQL默认是要区分表名大小写的,哎,弄了那么旧,害死我了。
  让MYSQL不区分表名大小写的方法其实很简单:
  1.用ROOT登录,修改/etc/my.cnf
  2.在[mysqld]下加入一行:lower_case_table_names=1
  3.重新启动数据库即可

今天测试的时候,遇到一些问题,明明看到数据,就是查不出来;后来发现,在linux下,mysql的表名区分大小写,而在windows下是不区分,从windows下导出的数据脚本中使用的是小写,
而Hibernate生成的sql中表名是大写的,所以查不出数据。
google了一些资料,修改mysql的一个参数就可以了,如下:
在ubuntu下,/etc/mysql/my.cnf文件中
[mysqld]的后面加
lower_case_table_names=1 
0,区分大小写; 1,不区分
好像还有说在/etc/my.cnf,在ubuntu下,这个不能使用。
然后重启mysql
sudo /etc/init.d/mysql restart
注:(下面内容摘自网上)
MYSQL在LINUX下数据库名、表名、列名、别名大小写规则如下: 
1.数据库名与表名是严格区分大小写的 
2.表的别名是严格区分大小写的 
3.列名与列的别名在所有的情况下均是忽略大小写的 
4.变量名也是严格区分大小写的 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: