印象深刻的bug:实际项目中遇到的MyBatis 一级缓存问题

背景:在分布式环境下,对数据库进行调整
环境:SpringBoot + MybatisPlus + MySQL + Docker

产生了一下错误信息

定位:在排除了确实不是写错数据库名导致的,初步判断是mybatis的缓存造成的,在了解了mybatis 缓存的基本原理后,把问题定位在一级缓存

原因:由于在修改了数据库名后,没有进行缓存的清除,也没有对数据进行增删改操作,在查询同一条sql语句时,走了sqlSession的一级缓存,是修改前的数据库名,导致出现unknow database 的出现。

解决办法

1:手动清除缓存 :在报错的查询语句前加下面的代码

@Autowired
private SqlSessionFactory sqlSessionFactory;

SqlSessionUtils.getSqlSession(sqlSessionFactory).clearCache();

2:配置文件:

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值