MySQL 不会回滚事务

标签 mysql transactions rollback autocommit

我花了很多时间在 MySQL Workbench 中进行开发。在过去的几周里,我一直在研究一些存储过程并在回滚事务中测试它们。但是,尽管我一直在回滚程序所做的更改,但它们仍在提交。我发现了运行“set autocommit = 0;”的建议这确实有效了一段时间。但现在,这也不起作用了。我运行以下命令,然后即使我在另一台运行 Workbench 的计算机上运行 select 语句,也会显示该过程所做的更改。

设置自动提交 = 0;

开始交易;

调用 TestProc(129,131);

从表1中选择*;

从表2中选择*;

回滚;

我以前从未需要过“set autocommit = 0”行,它会把事情搞乱,直到我将其重置为 1。但是,正如我所说,现在这甚至不起作用。

我想知道是否需要重置统计数据或其他内容。我已经完成了“Flush Tables”;和“刷新查询缓存;”;但是,问题仍然存在。我猜这是一个我不知道如何解决的维护问题。

任何帮助将不胜感激。

谢谢

迈克

最佳答案

14.3.2 Statements That Cannot Be Rolled Back

有些语句无法回滚。一般来说,这些包括...或存储例程(我的意思是您调用 TestProc(129,131);)。 您应该设计您的交易,使其不包含此类语句。

我希望这是有用的信息。

关于MySQL 不会回滚事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38277076/

相关文章:

并发数据库调用的 PHP/Mysql 问题

mysql - 在mysql中使用COALESCE来获取运费

java - 为什么从 XAResource 抛出 XAException 仍然不允许事务提交成功?

java - Spring数据源事务管理器不回滚

java - Spring 交易问题

mysql - 具有相同数据的 SQL 中的最大计数 (*) 错误

mysql - 续接交易 : ER_LOCK_WAIT_TIMEOUT

java - 使用 Apache Camel 事务时如何回滚文件写入?

sql服务器回滚

MySql Order By - 按值和名称自定义排序