执行数据库'INSERT'操作时事务无法回滚怎么办

发布时间:2021-09-15 11:11:51 作者:小新
来源:亿速云 阅读:151

这篇文章给大家分享的是有关执行数据库'INSERT'操作时事务无法回滚怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

在使用Spring声明式事务的时候,发现在做”update”时,出现异常事务可以回滚,但是在执行”insert”的时候,后台日志虽然显示回滚了,但是数据却已经保存到了数据库中,本来以为是哪里配置出错了,后来却发现是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)

到了这里原因就了然了,创建表时默认为”MyISAM”,关于”MyISAM”和”InnoDB”及其他的各种存储引擎的区别这里就不展开了,我们只需要将我们的表的存储引擎改为”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”。。。

感谢各位的阅读!关于“执行数据库'INSERT'操作时事务无法回滚怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

推荐阅读:
  1. laravel数据库事务回滚
  2. Spring中的事务回滚

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

数据库

上一篇:Pycharm使用技巧有哪些

下一篇:RabbitMQ怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》