记录mybatis的xml中表名称的大小写和数据库的表名称大小写不一致问题
1.场景
1.1数据库建表的表名称USER,
1.2mybatis的xml中使用的是user.
1.3使用mybatis的租户,并配置了。
1.4 租户A,数据库地址192.168.232.150(配置了不区分大小写)
租户B,数据库地址192.168.232.151(没有配置了区分大小写)
2.异常信息
Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, please exclude the tableName or statementId
3.异常排查
3.1通常我们会认为是sql问题,直接把sql(select * from user)拿到数据库客户端上执行,其实如果我只有数据库那么会很快排查出来,但是我直接把sql在[数据库地址192.168.232.150(配置了不区分大小写)]上执行了,sql一致运行正常.如果在[192.168.232.151(没有配置了区分大小写)]上执行就会发现提示没有这张表。服务启动后链接是【租户B,数据库地址192.168.232.151(没有配置了区分大小写)】哎。。。
3.2后来直接断点打到异常处,点击异常信息原因,一步步点进去,会发现,有个异常信息是表不存在,表名称和数据库的名称大小写不一致
3.3在[192.168.232.151(没有配置了区分大小写)]上使用sql(select * from USER)正常。找到原因了。。。。
3.4mysql的配置文件有个设置表名称区分大小写的配置。修改为1即可。
lower_case_table_names参数详解:
lower_case_table_names=1
其中0:区分大小写,1:不区分大小写
文章讲述了在Mybatis中遇到的XML映射文件表名与数据库表名大小写不一致的问题,以及如何通过配置MySQL的lower_case_table_names参数来解决。作者通过实际案例和排查过程揭示了问题所在。
1687





