MySQL事务不回滚会有什么影响?

问题描述

这是关于 MysqL 的一般问题。假设我们在脚本中启动了一个事务(脚本可以是任何语言,如 Python、PHP、Nodejs 等),并且由于数据中的一些验证问题,我们需要停止脚本。并且我们在没有回滚事务的情况下停止了脚本。

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

解决方法

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

实际上,唯一安全的方法是使用事务或仅执行原子 SQL 语句(但是,这些语句会自动在他们自己的事务中运行)。