Linux下Mysql的表名大小写敏感引起数据库操作失败

时间:2021-10-24 22:11:30

今天处理了一个奇怪的问题,现象如下:

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)

说明是表名大小写敏感引起的异常,问题从网上搜一下就很好解决了。