关于seata无法连接MySQL8数据库解决方案
前言
- 本人采用
window
部署seata底层默认采用MySQL5.7
的数据库,然后我下载的seata版本是1.5.1
配置采用nacos(2.0.3
)的共享配置中心读取seata配置。 - 将驱动类修改为8的驱动类的话可以启动但是会报错,找不到数据源
- 使用5的驱动类会发现seata服务直接无法启动
解决方案
更换seata版本 提高到1.6.0
seata下载地址:https://github.com/seata/seata/releases
seata中的yml配置
nacos2.2.2
版本没有登录功能需要注释掉nacos用户名密码
server:
port: 7091
spring:
application:
name: seata-tc-server
logging:
config: classpath:logback-spring.xml
file:
path: ${user.home}/logs/seata
extend:
logstash-appender:
destination: 127.0.0.1:4560
kafka-appender:
bootstrap-servers: 127.0.0.1:9092
topic: logback_to_logstash
console:
user:
username: seata
password: seata
seata:
config:
# 读取tc服务端的配置文件的方式,这里是从nacos配置中心读取,这样如果tc是集群,可以共享配置
type: nacos
nacos:
server-addr: 127.0.0.1:8848
namespace:
group: DEFAULT_GROUP
username: nacos
password: nacos
##if use MSE Nacos with auth, mutex with username/password attribute
#access-key: ""
#secret-key: ""
data-id: seataServer.properties
registry:
# tc服务的注册中心类,这里选择nacos,也可以是eureka、zookeeper等
type: nacos
nacos:
application: seata-server # 服务名可以更改
server-addr: 127.0.0.1:8848 # nacos地址
group: DEFAULT_GROUP
namespace:
username: nacos # nacos用户名密码
password: nacos
# server:
# service-port: 8091 #If not configured, the default is '${server.port} + 1000'
security:
secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
tokenValidityInMilliseconds: 1800000
ignore:
urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login
nacos中seata的配置
注意:mysql8.0.25
之前的版本连接地址需要指定serverTimezone=Asia/Shanghai
# 数据存储方式,db代表数据库
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=root # 数据库账号
store.db.password=root # 数据库密码
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
# 事务、日志等配置
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
# 客户端与服务端传输方式
transport.serialization=seata
transport.compressor=none
# 关闭metrics功能,提高性能
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898
项目继承seata
- springboot版本:
2.6.X,2.7.X
- springcloud版本:
2021.0.3
- springcloudalibaba版本:
2021.0.4.0