sqlite
サーブレット アプリケーションでデータベースとクラスを使用java.sql
して、データをデータベースにバッチ挿入します。異なる種類のデータの連続した 4 つの挿入があります。それぞれ次のようになります。
PreparedStatement statement = conn
.prepareStatement("insert or ignore into nodes(name,jid,available,reachable,responsive) values(?,?,?,?,?);");
for (NodeInfo n : nodes)
{
statement.setString(1, n.name);
statement.setString(2, n.jid);
statement.setBoolean(3, n.available);
statement.setBoolean(4, n.reachable);
statement.setBoolean(5, n.responsive);
statement.addBatch();
}
conn.setAutoCommit(false);
statement.executeBatch();
conn.commit();
conn.setAutoCommit(true);
statement.close();
しかし、時々私は
java.sql.SQLException: database in auto-commit mode
データベースが自動コミットモードのjava.sql.Connection
ときに呼び出すと、この例外がスローされることがソースコードでわかりました。commit()
しかし、以前に自動コミットをオフにしましたが、現在アプリケーションが一度だけオンになっているため、並列実行に関連する問題の場所がわかりません。
この問題をデバッグする方法はありますか? null
このエラーには別の理由があるのではないでしょうか ( null 以外のフィールドに挿入すると、データベースが見つからないか、適切に構成されていないという例外がスローされる可能性があることがわかったためです)。