seata2.3版本,2.6版本安装步骤-以及遇上的坑
2026/7/6 3:33:07 网站建设 项目流程

seata2.3版本,集成mysql遇上的问题

Windows 下,数据库驱动改为com.mysql.cj.jdbc.Driver,并且也已经在%BASEDIR%/lib/jdbc下添加 MySQL 驱动mysql-connector-java-8.0.30.jar,但 seata-server 2.3.0 启动失败,下面是错误堆栈简要信息:

Caused by: org.apache.seata.common.exception.StoreException: The driver {com.mysql.cj.jdbc.Driver} cannot be found in the path D:\Seata-2.3.0\seata-server/lib/jdbc/. Please ensure that the appropriate database driver dependencies are included in the classpath. at org.apache.seata.core.store.db.AbstractDataSourceProvider.validate(AbstractDataSourceProvider.java:103) at org.apache.seata.core.store.db.AbstractDataSourceProvider.generate(AbstractDataSourceProvider.java:84)

解决方案

经过研究源码和seata-server.bat脚本,得知源码中需要通过java.class.path系统变量得到 JDBC 驱动 jar 包,并且 jar 包还要以mysql-connector-java-作为前缀。而脚本中通过java -jar方式启动,-classpath变量并没有生效。因此脚本中需要做出两点改动:

  • 去掉-classpath变量

  • -jar "%BASEDIR%"/target/seata-server.jar修改为:

    -cp "%BASEDIR%"/target/seata-server.jar;"%BASEDIR%"/lib org.springframework.boot.loader.PropertiesLauncher

以上是2.3版本,2.6版本已经做了bat启动命令的优化,只需要把jar包导入lib/jdbc下就行了

安装步骤,下面我以2.3的来写

2.x 版本对应的nacos版本最好是 nacos-server-2.3.0,使用3.x或者1.x会有报错,少走弯路

1.下载:https://seata.apache.org/zh-cn/release-history/seata-server ,点击官网下载你喜欢的版本就行

2:解压,进入lib下面的jdbc目录:下载jar包到这个目录下面,并且要命名为mysql-connector-java-xx开头,否则会报错 ,比如我的nacos上面seataServer.properties 如下,下载的jar包本来是mysql-connector-j-8.0.33.jar,要修改成mysql-connector-java-8.0.33.jar ;2.6版本就不需要修改了

3. config目录下 application.yml配置如下

server: port: 7091 spring: application: name: seata-server logging: config: classpath:logback-spring.xml file: path: ${log.home:${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: type: nacos nacos: server-addr: 127.0.0.1:8848 namespace: 539fe715-08e4-4614-8941-059cc5c37497 username: nacos password: nacos group: SEATA_GROUP # 指定Nacos里的配置文件dataId >-cp "%BASEDIR%"/target/seata-server.jar;"%BASEDIR%"/lib org.springframework.boot.loader.PropertiesLauncher

5.把seata用到的数据库导入你的mysql下:https://github.com/apache/incubator-seata/blob/v2.6.0/script/server/db/mysql.sql

6.执行启动就ok了

7.下面是我的nacos seataServer.properties整体文件,可以复制用

# ====================== 事务分组(若依固定,不要改) ====================== service.vgroupMapping.ruoyi-system-group=default service.vgroupMapping.ruoyi-admin-group=default service.vgroupMapping.ruoyi-gateway-group=default service.vgroupMapping.ruoyi-gen-group=default service.vgroupMapping.ruoyi-job-group=default service.vgroupMapping.ruoyi-file-group=default service.vgroupMapping.ruoyi-monitor-group=default # seata-server集群地址,单机写default:127.0.0.1:8091 service.default.grouplist=127.0.0.1:8091 service.enableDegrade=false service.disableGlobalTransaction=false # ====================== 客户端事务超时、锁重试 ====================== client.rm.asyncCommitBufferLimit=10000 client.rm.lock.retryInterval=10 client.rm.lock.retryTimes=30 client.rm.lock.retryPolicyBranchTimeout=false client.tm.defaultGlobalTransactionTimeout=60000 client.tm.degradeCheck=false client.tm.degradeCheckAllowTimes=10 client.tm.degradeCheckPeriod=2000 # ====================== Undo日志(回滚日志) ====================== client.undo.logTable=undo_log client.undo.logDeletePeriod=86400000 client.undo.compress.enable=true client.undo.compress.type=zip client.undo.compress.threshold=64k # ====================== TCC模式(默认开启) ====================== tcc.fence.logTableName=tcc_fence_log tcc.fence.cleanPeriod=1h log.exceptionRate=100 # ====================== 存储模式DB(解决你驱动缺失报错核心段) ====================== store.mode=db store.lock.mode=db store.session.mode=db # 数据库连接 MySQL8必须用cj驱动 store.db.datasource=druid store.db.dbType=mysql store.db.driverClassName=com.mysql.cj.jdbc.Driver # 修改为你的ry-seata库地址、账号密码 store.db.url=jdbc:mysql://127.0.0.1:3306/ry-seata?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true store.db.user=root store.db.password=123456 # 连接池参数 store.db.minConn=5 store.db.maxConn=30 store.db.maxWait=5000 # Seata事务表(ry-seata.sql自动生成,不要修改表名) store.db.globalTable=global_table store.db.branchTable=branch_table store.db.lockTable=lock_table store.db.distributedLockTable=distributed_lock store.db.queryLimit=100 # ====================== 文件存储(db模式可注释,仅file模式启用) ====================== #store.file.dir=file_store/data #store.file.maxBranchSessionSize=16384 #store.file.maxGlobalSessionSize=512 #store.file.fileWriteBufferCacheSize=16384 #store.file.flushDiskMode=async #store.file.sessionReloadReadSize=100

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询