私はmysqlでJDBCを使用しています。単一のトランザクションで実行しているかなり複雑な一連の挿入と更新があります。これはほとんどの場合機能しているように見えますが、約 1% の確率で、テーブルの 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 です。