我将 JDBC 与 mysql 一起使用。我在单个事务中进行了一系列非常复杂的插入和更新。这似乎在大多数情况下都有效,但在大约 1% 的情况下,我发现我的一个表中的数据处于不一致状态。
如果发生错误,我将回滚事务,但不确定如何开始调试。我的设置通常如下所示:
try {
conn.setAutoCommit(false);
PreparedStatement stmt1 = conn.prepareStatement("insert into table1");
stmt1.executeUpdate();
stmt1.close();
PreparedStatement stmt2 = conn.prepareStatement("update table2");
stmt2.executeUpdate();
stmt2.close();
... more statements ...
conn.commit();
}
catch (Exception ex) {
conn.rollback();
}
我正在使用 2010 版本的 mysql。我可能会尝试更新它,但我觉得它更多的是我的应用程序代码中导致不一致的东西。
是否有任何我可能会在数据库级别发现有用的调试工具来提供帮助?还有其他指针吗?我正在使用所有默认设置的 JDBC,我想知道在这种情况下是否需要使用更严格的事务级别?
谢谢
----- 注意 ----- 我所有的表都是 InnoDb。