我花了很多时间在 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/