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

Web程序连接MySql提示表找不到问题的分析

2011-12-08 11:04 267 查看
今天要将一个应用程序部署到服务器上,操作系统是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,问题解决。
       总结:网上的很多人,有的时候问题的本质和你所遇到的问题一样,但是由于其他原因导致表面现象各不相同,因此不能死搬硬套,要经过分析和筛选,寻找问题的本质所在,才能更好利用好互联网这个资源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐