MySQL不会回滚交易

时间:2016-07-09 00:23:28

标签: mysql transactions rollback autocommit

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

设置autocommit = 0;

启动交易;

致电TestProc(129,131);

从Table1中选择*;

从表2中选择*;

回滚;

我之前从未需要过“set autocommit = 0”这一行,直到我把它重置为1之后它才会混乱。但是,正如我所说,现在甚至都没有工作。

我想知道是否需要重置统计信息或其他内容。我试过“冲洗桌子”;和“刷新查询缓存;”;但问题仍然存在。我猜这是一个维护问题,我不知道如何解决。

非常感谢任何帮助。

谢谢,

麦克

1 个答案:

答案 0 :(得分:0)

14.3.2 Statements That Cannot Be Rolled Back

某些语句无法回滚。通常,这些包括......或存储的例程(我的意思是调用TestProc(129,131); )。 您应该将交易设计为不包括此类声明。

我希望这是有用的信息。