1. 程式人生 > >Spring-Boot 事務@Transaction註解不回滾異常處理

Spring-Boot 事務@Transaction註解不回滾異常處理

測試:

    模擬使用jpa連續插入資料到資料庫,並開啟事務


    其中4、6因為超出長度限制。

    按道理會觸發回滾操作,但是不然。。。

日誌明明顯示觸發回滾操作了,但是資料庫的資料卻沒有達到原子性


    解決辦法:

        由於@Transaction註解,在MySQL中,貌似只有在InnoDB引擎下才會有效


    將引擎改成InnoDB就好了

    修改Mysql引擎:

        檢視某表的引擎:show create table xxx;  xxx->表名

        1.在控制檯中,輸入指令:

                alter table xxx engine=InnoDB;

        2.通過修改Mysql配置檔案:

                在Mysql的安裝資料夾中找到 my-default.ini檔案,開啟在[mysqld]下面加上一條命令:

                default-storage-engine=INNODB

    注意:

        jpa預設在Mysql中建立的表示MyISAM引擎的,需要在配置檔案中設定一下:

                spring.jpa.database-platform: org.hibernate.dialect.MySQL5InnoDBDialect