溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

執(zhí)行數(shù)據(jù)庫'INSERT'操作時事務無法回滾怎么辦

發(fā)布時間:2021-09-15 11:11:51 來源:億速云 閱讀:150 作者:小新 欄目:大數(shù)據(jù)

這篇文章給大家分享的是有關(guān)執(zhí)行數(shù)據(jù)庫'INSERT'操作時事務無法回滾怎么辦的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

在使用Spring聲明式事務的時候,發(fā)現(xiàn)在做”update”時,出現(xiàn)異常事務可以回滾,但是在執(zhí)行”insert”的時候,后臺日志雖然顯示回滾了,但是數(shù)據(jù)卻已經(jīng)保存到了數(shù)據(jù)庫中,本來以為是哪里配置出錯了,后來卻發(fā)現(xiàn)是Mysql存儲引擎的的問題。我們用的Mysql版本是”5.1.73”,默認存儲引擎是”MyISAM”。

查看mysql版本:

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.1.73    |
+-----------+
1 row in set (0.00 sec)

查看mysql存儲引擎

mysql> SHOW ENGINES;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
5 rows in set (0.00 sec)

到了這里原因就了然了,創(chuàng)建表時默認為”MyISAM”,關(guān)于”MyISAM”和”InnoDB”及其他的各種存儲引擎的區(qū)別這里就不展開了,我們只需要將我們的表的存儲引擎改為”InnoDB”就可以了。

SHOW TABLE STATUS FROM database;


ALTER TABLE table_name ENGINE = InnoDB;

mysql> ALTER TABLE table_name ENGINE = InnoDB;
Query OK, 8 rows affected (0.03 sec)
Records: 8  Duplicates: 0  Warnings: 0

如果是主庫的話,最好是把默認的存儲引擎改為 “InnoDB”。。。

感謝各位的閱讀!關(guān)于“執(zhí)行數(shù)據(jù)庫'INSERT'操作時事務無法回滾怎么辦”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI