首页 > 代码库 > Linux下Mysql的表名大小写敏感引起数据库操作失败
Linux下Mysql的表名大小写敏感引起数据库操作失败
今天处理了一个奇怪的问题,现象如下:
1、 Linux下安装了Mysql,导入数据库表,一切正常;
2、 Spring+Myibatis连接数据库正常;
3、 当执行数据库查询的时候,抛出如下异常:
org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table ‘gonggao.BC_NOTICE_ATTACHMENT‘ doesn‘t exist ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table ‘gonggao.BC_NOTICE_ATTACHMENT‘ doesn‘t exist ; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table ‘gonggao.BC_NOTICE_ATTACHMENT‘ doesn‘t exist at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:233) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:346) at com.sun.proxy.$Proxy7.selectList(Unknown Source) …… |
按照提示,意思是表不存在,可是查数据库,表是存在的:
mysql> show tables;
bc_notice_attachment
……
这个问题就奇怪了,大家都不知道问题出在哪里。
后来我用命令连上mysql,输入:
mysql>Insert into BC_NOTICE_ATTACHMENT(notice_id,name,url) values(-1,’test’,’test’);
ERROR 1146 (42S02): Table ‘gonggao. BC_NOTICE_ATTACHMENT’ doesn’nt exit
换成:
mysql>Insert into bc_notice_attachment(notice_id,name,url) values(-1,’test’,’test’);
Query OK, 1 row affected (0.01 sec)
说明是表名大小写敏感引起的异常,问题从网上搜一下就很好解决了。
Linux下Mysql的表名大小写敏感引起数据库操作失败