MySQL事务不回滚会有啥影响?

Posted

技术标签:

【中文标题】MySQL事务不回滚会有啥影响?【英文标题】:What will be the impact of MySQL transaction is not rolling back?MySQL事务不回滚会有什么影响? 【发布时间】:2021-04-06 18:39:14 【问题描述】:

这是关于 mysql 的一般问题。假设我们已经在我们的脚本中启动了一个事务(脚本可以是 Python、php、Nodejs 等任何语言)并且由于数据中的一些验证问题,我们需要停止脚本。我们已经停止了脚本而不回滚事务。

这种情况下对MySQL会有什么影响?

【问题讨论】:

MySQL 可能会或可能不会受到影响。如需更详细的答案,我们可能希望查看示例脚本 【参考方案1】:

在没有交易的情况下,这里实际上有两种结果。如果数据库操作被中断,好的情况是 a) 事务刚刚开始并且没有执行 DML,或者 b) 事务 DML 已经完成。在这种情况下,您的基础数据不会损坏,但您可能不知道交易是否执行。当事务在某些 DML 的中间被切断时,就会发生糟糕的情况。在这种情况下,您的表中可能存在不一致的数据。

真的,在这里唯一安全的方法是使用事务或只执行原子 SQL 语句(但是,它会自动在他们自己的事务中运行)。

【讨论】:

我很困惑,我读到的问题好像一个事务 is 处于活动状态,并且操作人员只想知道如果脚本只是让它未提交会发生什么。 @JoachimIsaksson 好吧,我可能假设脚本会关闭/释放数据库连接,这反过来也应该关闭所有打开的事务。那么,剩下的问题是 MySQL 上的底层数据会发生什么。

以上是关于MySQL事务不回滚会有啥影响?的主要内容,如果未能解决你的问题,请参考以下文章

在不自动提交的情况下,回滚段有啥用。

MySQL-长事务详解

spring @Transactional JDBC 模板 MySQL DB 不回滚

java中事务不回滚!

spring配置了事务,抛出异常不回滚

@Transaction不回滚事务问题