Linux MySQL数据库无法找到表对象

277 阅读1分钟

我们在开发中,mysql是一款不错的数据库,在开发环境一般都是windows平台下开发,部署时,需要发布到linux环境下,mysql也是一个跨平台的数据库,很多时候,在windows下开发使用mysql问题很少,但移值到linux的时候,会出现莫名其妙的问题。

如题,在我们项目开发完成后,项目部署到linux下,同样mysql也是linux环境下,在对mysql进行持行sql语句时,查看日志,看到mysql提醒Error 1146 : "表对象不存在"!

SELECT * FROM USER;

这是一个很简单的查询,但是日志中的错误很明显,将SQL语句Copy到linux下持行,确没有任何问题。

mysql -uroot -p
use dbname;
SELECT * FROM USER;

我们发现所有的用户信息都可以查出来,说明SQL语句没有问题,这时,我们就可以排查到项目中集成的mysql sdk与服务器上的mysql有字符问题。

通过官方描述,mysql在linux环境下是有大小写区分的,所以建表时的表名大小写与项目中持行SQL查询是必须保持一致的,这时,我们在去改代码已经不合适了,因为表太多了,如果用了存储过程,那修改起来更加的麻烦,这时,我们想到my.cnf文件,mysql的配置为我们解决此类问题。

vim /etc/my.cnf
[mysqld]
# 0 区分大小写, 1不区分大小写
lower_case_table_names=1

按上述操作,在修改完成后,保存cnf文件, 重启mysql即可!