今天要将一个应用程序部署到服务器上,操作系统是Linux,应用服务器是JBoss。在JBoss启动完毕之后,发现程序并没有启动,查看日志,原来在启动程序时,应用程序需要连接MySql数据库,同时要查询其中的某张表,结果说找不到这张表,报出的错误类似于:can`t fing dbName.TABLENAME(大写) 这种格式。
开始以为,是MySql的原因,因为据说在MySql5以后的版本中,数据库默认是不允许远端服务器访问的,于是用自己电脑上的MySql客户端去连接服务器,结果一切正常,又查看了一些权限的资料和查看数据库中的配置,况且数据库和应用程序在同一台机子上,那就排除了问题出在数据库权限上这个原因。
后来上网查了下,发现这个版本的MySql是区分大小写的,又查看了日志,发现日志中报错的表名果然是大写的,然后MySql客户端工具查看了下,显示数据库的表名都是小写。所以,怀疑是因为大小写的原因。于是开始分析程序执行的过程,由于ORM框架使用的是Hibernate,该框架会对表名进行封装,具体生成后的SQL语句是它根据配置文件来生成的,于是,我就查看了下Hibernate的配置文件,最后发现果然配置文件中的表名是大写的。
但是当前遇到了问题是,配置在Hibernate中的持久化PO非常多,如果要一个个地改太麻烦,于是想,能不能让MySql数据库忽略大小写,于是又查了相关的资料。原来在Linux上安装MySql时,默认是不忽略大小写的,但是可以通过修改配置文件可以让其忽略,网上说这个配置文件的全路径是/etc/my.cnf。大家知道,而查看后,发现当前系统下并没有这个文件,相关资料表明,这个文件默认的情况下并不存在,于是就想,是否可以自己配置下,于是,就从本地用记事本将:[mysqld]
lower_case_table_names=1这句代码保存起来,然后修改文件名为my.cnf之后用ftp上传到服务器上,重启MySql,运行程序,OK,问题解决。
总结:网上的很多人,有的时候问题的本质和你所遇到的问题一样,但是由于其他原因导致表面现象各不相同,因此不能死搬硬套,要经过分析和筛选,寻找问题的本质所在,才能更好利用好互联网这个资源。
mysql查不到数据 mysql找不到表的原因
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
IDEA java找不到或无法加载主类怎么解决
IDEA java找不到或无法加载主类怎么解决
Java 重启 新版本