网站代码移植到服务器的时候,发现数据库读取不出来,查找原因,最终发现是数据库表名大小写问题。
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的;
操作系统的敏感性决定数据库和表命名的大小写敏感,所以:
MySQL在Windows下都不区分大小写。
MySQL在Mac下好像也不区分大小写(起码我操作起来没出现问题),但是OS X又是类Unix系统,难道大小写敏感改了?
XiaonandeMacBook-Pro:~ Ive$ ls
Applications Downloads Music VirtualBox VMs
Desktop Library Pictures www
Documents Movies Public
XiaonandeMacBook-Pro:~ Ive$ cd music
XiaonandeMacBook-Pro:music Ive$ ls
Audio Music Apps iTunes
GarageBand 网易云音乐
XiaonandeMacBook-Pro:music Ive$ cd ../Music/
XiaonandeMacBook-Pro:Music Ive$ ls
Audio Music Apps iTunes
GarageBand 网易云音乐
测试了一下,大小写其实都可以,但是小写的时候,没有Tab补全。
所以在不同操作系统中为了能使程序和数据库都能正常运行,最好的办法是在设计的时候都转为小写,但是如果在设计的时候已经规范化大小写了,那么在Linux环境下只要对数据库的配置做下改动就行了,具体操作如下:
在MySQL的配置文件中/etc/mysql/my.ini
[mysqld]
模块中增加一行
lower_case_table_names = 1
参数解释:
0:区分大小写
1:不区分大小写