用Mybatis-Plus连接时,报错Table ‘test.user‘ doesn‘t exist问题解决

先说结论,我的是因为数据库mysql表名区分大小写!

运行环境:
MacOS系统,docker容器运行的mysql

问题复现:
用mp运行一个简单的user demo,表名为大写USER,类名User,报错完整信息如下

org.springframework.jdbc.BadSqlGrammarException: 
### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table 'test.u_s_e_r' doesn't exist
### The error may exist in com/example/mybatistest/mapper/UserMapper.java (best guess)
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: SELECT id,name,age,email FROM u_s_e_r WHERE id=?
### Cause: java.sql.SQLSyntaxErrorException: Table 'test.u_s_e_r' doesn't exist
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table 'test.u_s_e_r' doesn't exist

问题解决及原因:
首先在mysql查看是否区分大小写:

show Variables like ‘%table_names’;

用Mybatis-Plus连接时,报错Table ‘test.user‘ doesn‘t exist问题解决_第1张图片
如果跟我一样,恭喜你,找到原因了!只需要在就需要在[mysqld]下面添加一行配置,

lower_case_table_names=1

其中 0:区分大小写,1:不区分大小写,然后重启mysql服务即可!

这个答案到这里就结束了,但是开始了我的噩梦,我修改了对应的mysql.cnf配置文件后,docker就无法启动mysql容器,只要我把这个新增的配置去掉,就可以正常启动,尝试了小半天无果,最后无奈把我的表名改成了小写user!如果有大佬知道还请不吝赐教!

你可能感兴趣的:(mybatis)