我花了很多时间在MySQL Workbench上开发。在过去的几周里,我一直在研究一些存储过程并在回滚事务中测试它们。但是,即使我一直在回滚,程序所做的更改仍在进行中。我找到了运行'set autocommit = 0;'的建议这一直有效。但是,现在,这也没有用。我运行以下操作,然后即使我在另一台运行Workbench的计算机上运行select语句,也会显示该过程所做的更改。
设置autocommit = 0;
启动交易;
致电TestProc(129,131);
从Table1中选择*;
从表2中选择*;
回滚;
我之前从未需要过“set autocommit = 0”这一行,直到我把它重置为1之后它才会混乱。但是,正如我所说,现在甚至都没有工作。
我想知道是否需要重置统计信息或其他内容。我试过“冲洗桌子”;和“刷新查询缓存;”;但问题仍然存在。我猜这是一个维护问题,我不知道如何解决。
非常感谢任何帮助。
谢谢,
麦克
答案 0 :(得分:0)
14.3.2 Statements That Cannot Be Rolled Back
某些语句无法回滚。通常,这些包括......或存储的例程(我的意思是调用TestProc(129,131); )。 您应该将交易设计为不包括此类声明。
我希望这是有用的信息。