`

mysql事务回滚

 
阅读更多

前几天发现程序有个Bug:使用JPA已经设置了回滚,但抛出异常后,提交的事务并没有回滚。

刚开始以为是JPA使用问题,debug了近2个多小时竟然找不到原因。

后来上网查了一下,才发现不是程序问题(坑爹啊,看来自己对mysql还是不熟),是数据库表问题(JPA自动建表)。

原因如下:
mysql建表时如果指定ENGINE=MyISAM,事务是无法回滚的(MyISAM引擎本身不支持事务)。
需要执行:
alter table [tablename] ENGINE=INNODB
指定为INNODB引擎才能支持事务管理。
更新完之后再执行程序,一切恢复正常了。
在这里记录一下,希望对看到的人有帮助。
分享到:
评论

相关推荐

    Spring+Mybatis整合事务回滚

    花了一晚上时间终于搞出来了Spring整合Mybatis事务回滚(Mysql数据库),控制Service层中的多次插入操作,多次操作整体是一个事务。 里面有缘嘛和jar包,资源为war包,导入即可。运行Test类中的测试代码即可。 建表...

    MYSQL事务回滚的2个问题分析

    下面我们将深入探讨两个关于MySQL事务回滚的问题。 ### 问题1:为什么AUTO_INCREMENT没有回滚? MySQL的InnoDB存储引擎在处理`AUTO_INCREMENT`列时,其递增计数器是存储在内存中的,而不是磁盘上的数据文件。这...

    MySql事务无法回滚的原因有哪些

    MySQL事务无法回滚的情况可能由多种因素引起,尤其是在配置如Hibernate、Spring或JDBC等框架时,如果一切看似正常,但事务处理仍然失效,我们应当深入检查数据库本身的特性和设置。首要的问题通常与所选用的表类型...

    mysql实现事务的提交与回滚的实例详解

    在这个例子中,如果在插入数据时发生异常,`t_error`会被设置为1,导致事务回滚;如果没有异常,`t_error`仍为0,事务会被提交。 另一种更简洁的方法是直接在异常处理器中设置回滚,如下所示: ```sql DELIMITER /...

    有关数据库事务回滚机制实例

    在探讨数据库事务回滚机制实例之前,我们先来理解一下什么是数据库事务以及为什么需要事务管理。数据库事务(Transaction)是指一组逻辑操作单元,这组操作要么全部成功,要么全部失败,是一个不可分割的工作单位。...

    mongoDB 4.0事务回滚的辛酸历程探究

    事务回滚是事务处理中的关键部分,确保在出现错误或异常时,数据库能够恢复到事务开始之前的状态。 在升级到MongoDB 4.0之后,首先需要注意的是确保环境的兼容性。使用Homebrew升级MongoDB到4.0.0版本,同时更新`...

    MySQL事务部分回滚-回滚到指定保存点.zip_MYSQL_begunfqh_detailrj2

    在“MySQL事务部分回滚-回滚到指定保存点.pdf”文件中,你可能会找到更多关于如何在实际操作中应用这些概念的详细步骤和示例,包括如何创建和管理保存点,以及如何在出现问题时有效地回滚到特定保存点。建议仔细阅读...

    MySQL InnoDB 日志 回滚段 & 崩溃恢复实现详解 修改版

    ### MySQL InnoDB 日志 回滚段 & 崩溃恢复实现详解 #### 知识准备 - **ACID** - 在数据库管理系统中,事务具有四个关键属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性...

    ThinkPHP实现事务回滚示例代码

    以下将详细介绍如何在ThinkPHP中实现事务回滚,并探讨相关的数据库事务概念。 首先,事务是一个逻辑操作单元,它包含一组数据库操作,这些操作要么全部执行,要么全部不执行。这样可以确保即使在系统故障或部分失败...

    php的事务回滚

    运行环境,只需要在数据库增加表和代码里对于的几个字段,修改一下代码对应的数据库名和账号密码

    mysql-connector-c++-8.0.13-winx64

    通过`begin()`, `commit()`, `rollback()`方法,可以控制事务的开始、提交和回滚,确保数据的一致性。 6. **异常处理**:Connector/C++采用C++的异常处理机制。当发生错误时,会抛出`sql::SQLException`,开发人员...

    浅析Mysql 数据回滚错误的解决方法

    上述过程中的示例代码演示了如何使用Mysql事务控制语句来插入数据,同时演示了当发生错误时(例如故意执行的错误SQL语句),通过回滚操作撤销事务以保持数据一致性。代码中展示了两种事务处理方法,均包括了如何开始...

    mySQL事务处理

    关于mysql的事务处理 public static void StartTransaction(Connection con, String[] sqls) throws Exception { if (sqls == null) { return; } Statement sm = null; try { // 事务开始 System....

Global site tag (gtag.js) - Google Analytics