hibernate.util.JDBCExceptionReporter - SQL Error: 1146, SQLState: 42S02
[ERROR] [2015-04-29 13:41:683] org.hibernate.util.JDBCExceptionReporter - Table 'aa.columninfoTotal' doesn't exist
[ERROR] [2015-04-29 13:41:684] org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler - Exception occurred during processing request: could not initialize a collection: [com.future.cms.pojo.Columninfo.columninfoTotals#36]
org.hibernate.exception.SQLGrammarException: could not initialize a collection: [com.future.cms.pojo.Columninfo.columninfoTotals#36]
MySQL数据库从windows迁到Linux上,结果程序跑不起来了,不停提示“*** table doesn't exist”,查了一下,linux下默认mysql是区分大小写的,具体规则如下:
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的;
解决方案如下:
1、修改 my.cnf 配置文件
MySQL在Windows下都不区分大小写。
如果改成不区分大小写,修改、/etc/my.cnf,在[mysqld]后面加上lower_case_table_names=1,重启mysql服务即可。
如果 etc 下没有 my.cnf 文件,就自己创建一个
2、修改程序,Hibernate映射的时候,.hbm.xml里面的映射的时候表名字用小写;