關於MYSQL事務不回滾問題

2021-09-02 08:24:34 字數 1020 閱讀 2202

關於mysql事務不回滾的問題:

實現功能時,發現mysql事務不回滾,檢視表的引擎是innodb,但有可能資料庫的不是,檢視修改如下:

檢視mysql資料庫使用的儲存引擎:mysql>show variables like '%storage_engine%';結果:+----------------+--------+ |variable_name |value| +----------------+--------+ |storage_engine|innodb| +----------------+--------+ 

從結果上看,當前資料庫的預設儲存引擎是innodb(注意觀察support這一列的值),不過有的資料庫卻不是,它們預設的是myisam。非但如此,在support一欄中還顯示no,就是說連innodb都不支援。這就是為什麼不回滾的原因:innodb支援事務,而myisam不支援!其實myisam是mysql預設的儲存引擎,在安裝mysql時如果沒有指定儲存引擎,那麼mysql會預設使用myisam,因為它不支援事務,也許效率會比innodb高一些。

如果使用的是myisam,那麼需要將其改為innodb,具體方法如下:1、開啟「mysql_home/my.ini」,找到[mysqld],在它的下面有一句話是「skip-innodb」,將其注釋掉,即改為:#skip-innodb。2、在[mysqld]下加上一句「default_table_type=innodb」(如果寫成default-storage-engine=innodb也可以,兩者之間的區別我還沒有研究過)3、重啟mysql服務(注意:是重啟服務,不是光退出資料庫就完事了!)4、再次執行mysql> show engines;可以看見預設儲存引擎已經變成innodb了。5、原來已經存在的表,如果想使用事務,要修改它的儲存引擎,在預設是innodb的情況下刪除重建。當不想刪除的時候,執行alter table 表名 engine = innodb;之後執行show table status from 資料庫名 where name='表名';可以檢視表狀態,看儲存引擎是否被修改了。

在使用了innodb引擎之後,再次執行**,回滾成功!

關於AOP事務不回滾的問題

配置了事務,異常丟擲為什麼不回滾呢?解決 a.先確認資料庫型別,看表是否採用innodb,mysql只有innodb型別表才支援事務.myiasm 是不支援事務的.b.看事務配置的相關dtd 發現有個 rollback for 的配置.後面找了下.發現預設情況下.spring對checked exc...

Transactional事務不回滾問題

一 contextconfiglocation springmvc org.springframework.web.servlet.dispatcherservlet contextconfiglocation classpath spring mvc.xml 1 mvc 如上圖spring事務配置...

spring mybatis事務不回滾

對spring,mybatis進行整合時發現事務不能進行回滾處理,上網查了很多資料依舊還沒解釋,很多都是說要丟擲乙個runtimeexception才能回滾的,但嘗試過多種還不能,如下 classpath jdbc.properties bolgservice bolgflowservice 檢視資...