如何找出 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 中,如何找出运行它的计算机的物理位置(城市、国家)?