提示:该问题以及解决方案不适用于所有人,具体问题请具体分析
文章目录
前言
最近在用seata时所遇到的问题,这里分享出来
一、seata版本问题
1.具体问题
异常如下:
java.lang.NoSuchMethodException:
com.mysql.cj.conf.PropertySet.getBooleanReadableProperty(java.lang.String)
2.问题分析
翻看其它博客找到的大概原因:高版本mysql驱动中的接口com.mysql.cj.conf.PropertySet不存在getBooleanReadableProperty方法
3.解决方案
1.你可以下调mysql版本,但是没有人想重新装配吧。。。。
2.出现这个原因大概率是你的seata版本低了,比如我之前用的1.4就出现了这个问题,你可以使用最新版,例如1.6.1的,这里我测过了没问题。
二、seata内部mysql驱动版本问题
1.当添加@GlobalTransactional时fegin出问题
异常展示
feign.FeignException$InternalServerError:
[500] during [PUT] to [http://account-service/account/user202103032042012/200]
[AccountClient#deduct(String,Integer)]:
添加@GlobalTransactional后fegin无法正常调用
2.问题分析
大概率是因为你的seata内部mysql驱动版本不一致,只需替换内部的就好
3.解决方案
我的相关版本,这里用的驱动是8.0.26
找到seata内部的驱动版本在lib下,如果没有jdbc文件夹就在lib下
此时用你的驱动替换掉里面的就可以了
最后最后驱动路径加上cj
store.db.driverClassName=com.mysql.cj.jdbc.Driver
总结
要确保seata里面用的jdbc驱动和你数据库版本相对应,以及seata版本要支持mysql8