如何找出 COMMIT 可能发生的位置?

Posted

技术标签:

【中文标题】如何找出 COMMIT 可能发生的位置?【英文标题】:How to find out where a COMMIT might be happening? 【发布时间】:2009-11-11 02:54:33 【问题描述】:

我正在重构一些代码,将一些相关的更新转换为一个事务。

这是使用 JDBC、mysql、InnoDB。

我相信在(相当大且未记录的)库或应用程序代码中的某处仍在发生不需要的 COMMIT。

找出发生这种情况的最简单方法是什么?

一定有某种隐式提交,因为我没有找到任何 COMMIT 语句。

【问题讨论】:

【参考方案1】:

查看this page in the MySQL docs 以了解导致隐式提交的语句。

另外,由于您使用的是 JDBC,请确保 autocommit 为 false,如

connection.setAutoCommit(false);

【讨论】:

在我找到 my.cnf 查询日志设置之后,查看列表实际上有所帮助。【参考方案2】:

我不是 mysql 专家,但应该有可能将所有执行的语句记录到文件和/或控制台。这可能会有所帮助。如果您可以在您知道的提交之前通过代码集断点进行调试,然后查看记录的语句。因此,您可能会看到是否存在不需要的提交。

【讨论】:

以上是关于如何找出 COMMIT 可能发生的位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何找出应用程序的安装位置?

如何找出 iphone CoreLocation Data 的来源?

从 Java 中,如何找出运行它的计算机的物理位置(城市、国家)?

如何找出对象在哪里被实例化?

如何获得触发的 MutationObserver 的堆栈跟踪?

zabbix 4.0安装