• springcloud整合seata我踩过的坑


    1. 版本问题 seata 1.5和1.5之前的目录结构不同,使用docker修改的配置文件也不同
      1.4的左右在这里插入图片描述
      1.5之后在这里插入图片描述
    2. docker 挂载文件也不同
      1.5之前是使用自己写的挂载registry
    docker run -d -p 8091:8091 -p 7091:7091   --network newlead  --name seata-serve    -e SEATA_IP=192.168.249.132     -v /home/hadoop/seata-sever1.4/seata-server.conf:/seata-server/resources/registry.conf     seataio/seata-server:1.4.0 
    
    
    • 1
    • 2

    1.5后就是
    先运行一个容器,把目录复制出来进行挂载

    docker run -d -p 8091:8091 -p 7091:7091  --name seata-serve seataio/seata-server:latest
    #拷出后可以,可以选择修改application.yml再cp进容器,或者rm临时容器,如下重新创建,并做好映射路径设置
    docker cp seata-serve:/seata-server/resources /User/seata/config
    
    • 1
    • 2
    • 3
    • 指定 application.yml
    docker run --name seata-server \
            -p 8091:8091 \
            -p 7091:7091 \
       -e SEATA_IP=宿主机ip \
            -v /User/seata/config:/seata-server/resources  \
            seataio/seata-server
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 连接不上nacos 或者springcloud连接不上seata,这三个之前
      有版本依赖关系如果跨版本就会报错

    2. 数据库连接失败导致seata无法启动

    当你的数据库是8之后,也许你的项目可以使用老驱动连接mysql,但是seata一定会报错,如果报错null指针,就要看看是否需要更换新驱动,并且有seata有些版本需要加时区

    store.db.driverClassName=com.mysql.cj.jdbc.Driver
    store.db.url=jdbc:mysql://localhost:3306/seata?useUnicode=true&rewriteBatchedStatements=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    
    • 1
    • 2
    1. 在使用seata时候需要在对应服务的库中添加undo_log回调日志表和全局锁表,不然也可能服务事务无法被seata管理
    /*
     Navicat Premium Data Transfer
    
     Source Server         : local
     Source Server Type    : MySQL
     Source Server Version : 50622
     Source Host           : localhost:3306
     Source Schema         : seata_demo
    
     Target Server Type    : MySQL
     Target Server Version : 50622
     File Encoding         : 65001
    
     Date: 20/06/2021 12:39:03
    */
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for undo_log
    -- ----------------------------
    DROP TABLE IF EXISTS `undo_log`;
    CREATE TABLE `undo_log`  (
      `branch_id` bigint(20) NOT NULL COMMENT 'branch transaction id',
      `xid` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'global transaction id',
      `context` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'undo_log context,such as serialization',
      `rollback_info` longblob NOT NULL COMMENT 'rollback info',
      `log_status` int(11) NOT NULL COMMENT '0:normal status,1:defense status',
      `log_created` datetime(6) NOT NULL COMMENT 'create datetime',
      `log_modified` datetime(6) NOT NULL COMMENT 'modify datetime',
      UNIQUE INDEX `ux_undo_log`(`xid`, `branch_id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'AT transaction mode undo table' ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Records of undo_log
    -- ----------------------------
    
    
    
    -- ----------------------------
    -- Table structure for lock_table
    -- ----------------------------
    DROP TABLE IF EXISTS `lock_table`;
    CREATE TABLE `lock_table`  (
      `row_key` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `xid` varchar(96) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `transaction_id` bigint(20) NULL DEFAULT NULL,
      `branch_id` bigint(20) NOT NULL,
      `resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `table_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `pk` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `gmt_create` datetime NULL DEFAULT NULL,
      `gmt_modified` datetime NULL DEFAULT NULL,
      PRIMARY KEY (`row_key`) USING BTREE,
      INDEX `idx_branch_id`(`branch_id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
    
    
    SET FOREIGN_KEY_CHECKS = 1;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
  • 相关阅读:
    JAVA基础实现对日期的常用操作
    常用汇编语法
    搭建公众号微商城+小程序微商城 企业商城系统一条龙 拖拽可视化装修模板
    c++ try catch
    架构师必备:系统容量现状checklist
    java.util.IllegalFormatConversionException: f != java.lang.String 问题解决!
    武汉链(基于ETH)BSN官方DDC链上数据解析
    穿山甲SDK接入收益·android广告接入·app变现·广告千展收益·eCPM收益(2023.11)
    Navisworks二次开发——根据属性值筛选出图元
    Redis设计与实现(八)| 事务
  • 原文地址:https://blog.csdn.net/qq_55272229/article/details/134511220