這篇文章給大家分享的是有關(guān)執(zhí)行數(shù)據(jù)庫'INSERT'操作時(shí)事務(wù)無法回滾怎么辦的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
目前成都創(chuàng)新互聯(lián)公司已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、烏蘭察布網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
在使用Spring聲明式事務(wù)的時(shí)候,發(fā)現(xiàn)在做”update”時(shí),出現(xiàn)異常事務(wù)可以回滾,但是在執(zhí)行”insert”的時(shí)候,后臺(tái)日志雖然顯示回滾了,但是數(shù)據(jù)卻已經(jīng)保存到了數(shù)據(jù)庫中,本來以為是哪里配置出錯(cuò)了,后來卻發(fā)現(xiàn)是MySQL存儲(chǔ)引擎的的問題。我們用的Mysql版本是”5.1.73”,默認(rèn)存儲(chǔ)引擎是”MyISAM”。
mysql> select version(); +-----------+ | version() | +-----------+ | 5.1.73 | +-----------+ 1 row in set (0.00 sec)
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)建表時(shí)默認(rèn)為”MyISAM”,關(guān)于”MyISAM”和”InnoDB”及其他的各種存儲(chǔ)引擎的區(qū)別這里就不展開了,我們只需要將我們的表的存儲(chǔ)引擎改為”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
如果是主庫的話,最好是把默認(rèn)的存儲(chǔ)引擎改為 “InnoDB”。。。
感謝各位的閱讀!關(guān)于“執(zhí)行數(shù)據(jù)庫'INSERT'操作時(shí)事務(wù)無法回滾怎么辦”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!