笔者最近在做网站测试的时候遇到一个问题。在首页登录进去之后无法正确跳转到主页,而是报了数据库错误。
报错的内容如下:
Table找不到。
经过检查,服务器上的mysql配置正常,mysql中已经导入该应用所必须的数据库表,且数据库连接正常。
然后再打开源代码
发现其中一句,“select * from T_User............”, 然后再对比服务器mysql里的表t_user , 发现原来是大小写敏感的问题。
由于笔者用的是Linux系统的服务器,其系统默认的mysql下表名是区分大小写,而其他同学用的Windows下本地mysql默认是表名不区分大小写。
补充一下Linux和Windows下mysql的大小写规则:
Linux:
数据库名与表名严格区分大小写
表的别名严格区分大小写
列名与列的别名在所有的情况下均忽略大小写
变量名严格区分大小写
Windows:
均不区分大小写
怎么解决呢,当然可以修改源码,修改数据库里的表名,还可以通过修改配置文件来解决。
我们可以通过配置文件的lower_case_table_names这个参数来控制。
Windows:
编辑mysql安装目录下的my.ini文件,在【mysql】下添加 lower_case_tale_names = 0 (备注: 0为大小写敏感,1为大小写不敏感, 默认为1)
Linux:
编辑/etc/my/cnf文件,在【mysqld】下添加 lower_case_tale_names 参数,并设置相应的值 (备注: 0为大小写敏感,1为大小写不敏感, 默认为0)
最后,希望这篇文章能够对大家以后遇到类似问题时有所帮助。