• springboot事务不回滚不生效


    排查思路:

    1:查看代码中是否有  try catch 捕获的异常,如果有事务是不生效的

    2:同一类内方法调用,无论被调用的b()方法是否配置了事务,此事务在被调用时都将不生效。取决于调用方是否开启事务

    3:查看数据库是否为 InnDB   

    show engines

      我在阿里云服务器上装的数据库默认为 MyISAM ,这样事务是不生效的。需要改为 InnoDB

    在Linux下叫my.cnf,该文件位于/etc/my.cnf  ,文件中 [mysqld] 下面加入

    default-storage-engine=INNODB

     :wq  保存后,重启mysql  

    service mysqld restart

    再次查看数据库引擎默认就为 InnDB啦 

     但是已经创建的数据库可是不会进行修改的,下方sql 生成查询命令  ,代码中数据库名改为自己的

    SELECT CONCAT( 'ALTER TABLE ', TABLE_NAME, ' ENGINE=InnoDB;' )
    FROM information_schema.tables
    WHERE table_schema = '数据库名'
    LIMIT 0 , 10000;

    copy 出数据一条一条的执行,修改成功

    3:还有一种情况是 service 调用其他service . 在首service 没加入

    @Transactional(propagation = Propagation.REQUIRED)

    而第二个service 加入事务注解,第一个没加入事务不会回滚

    如有错误,恳请指正  author:邱健 

  • 相关阅读:
    Assetbundle资源单一打包,以及加载方法
    VS2010 Chromium编译
    一道思考题
    Windbg源码调试
    C++ static_cast dynamic_cast reinterpret_cast const_cast转换
    条件断点设置
    FFmpeg 2.0编译配置
    error LNK2001: 无法解析的外部符号 _IID_IDirectDraw7
    Windbg常用命令
    DDraw绘图
  • 原文地址:https://www.cnblogs.com/blogspring/p/14191764.html
Copyright © 2020-2023  润新知