是什么:“启用autoCommit时无法提交”错误意味着什么?

时间:2011-08-02 16:39:50

标签: database postgresql

在我的程序中,我在池中有几个线程,每个线程都尝试写入数据库。创建的线程数是动态的。当创建的线程数只有一个时,一切正常。但是,当有多线程执行时,我收到错误:

org.apache.ddlutils.DatabaseOperationException: org.postgresql.util.PSQLException: Cannot commit when autoCommit is enabled.

我猜,也许因为每个线程并行执行,两个线程正在尝试同时写入并给出此错误。

你认为情况如果不是,可能导致这个错误的原因是什么?

否则,如果我说的是问题,我可以做些什么来解决它?

1 个答案:

答案 0 :(得分:8)

在您的jdbc代码中,您应该在获取连接后立即关闭自动提交。像这样:

DataSource datasource = getDatasource(); // fetch your datasource somehow
Connection c = null;
try{
  c = datasource.getConnection();
  c.setAutoCommit(false);