Spring-Boot 事務@Transaction註解不回滾異常處理
阿新 • • 發佈:2019-02-06
測試:
模擬使用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