我在 servlet 应用程序中使用sqlite
数据库和java.sql
类将一些数据批量插入到数据库中。有连续四次插入不同类型的数据。每个看起来像这样:
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
也许这个错误还有其他原因(因为我刚刚发现插入非空字段时会抛出关于数据库未找到或配置不当的异常)?