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

文章描述了一个开发者在MacOS环境下使用Docker运行的MySQL时遇到的问题,由于表名大小写敏感导致SpringBoot应用查询错误。解决方法是设置MySQL的lower_case_table_names配置,但修改配置后docker容器无法启动,最后作者不得不将表名改为小写。寻求进一步的解决建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先说结论,我的是因为数据库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’;

在这里插入图片描述
如果跟我一样,恭喜你,找到原因了!只需要在就需要在[mysqld]下面添加一行配置,

lower_case_table_names=1

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值