关于seata和mysql版本的相关问题

文章讲述了在使用Seata时遇到的两个主要问题及解决方案:一是Seata版本过低导致的mysql驱动接口不存在问题,升级Seata版本到1.6.1可以解决;二是Seata内部的MySQL驱动版本与实际使用的驱动不一致,导致@GlobalTransactional注解后的Feign调用失败,需替换Seata内部驱动为对应版本(如8.0.26)。
摘要由CSDN通过智能技术生成

提示:该问题以及解决方案不适用于所有人,具体问题请具体分析


前言

最近在用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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值