【问题标题】:MySQL Won't Roll Back TransactionsMySQL 不会回滚事务
【发布时间】:2016-07-09 00:23:28
【问题描述】:

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

设置自动提交 = 0;

开始交易;

调用 TestProc(129,131);

从表1中选择*;

从表2中选择*;

回滚;

我以前从未需要过“set autocommit = 0”这一行,直到我将其重置为 1,它才会把事情搞得一团糟。但是,正如我所说,这现在甚至都行不通了。

我想知道是否需要重置统计信息或其他什么。我已经实现了“冲洗表”;和“刷新查询缓存;”;但是,问题仍然存在。我猜这是我不知道如何解决的维护问题。

我们将不胜感激。

谢谢,

迈克

【问题讨论】:

  • 你需要比这更多的细节

标签: mysql transactions rollback autocommit


【解决方案1】:

14.3.2 Statements That Cannot Be Rolled Back

有些语句不能回滚。通常,这些包括 ... 或存储的例程(我的意思是您的 调用 TestProc(129,131);)。 你应该设计你的交易不包括这样的陈述。

我希望这是有用的信息。

【讨论】:

  • 列昂尼德,谢谢您的回复。但是,我在回滚事务中运行存储过程已经有几年没有问题了,包括更新、插入和删除记录的过程。我几周前才开始遇到这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
  • 1970-01-01
  • 2012-09-14
  • 2018-05-01
相关资源
最近更新 更多