在我的程序中,我在池中有几个线程,每个线程都尝试写入数据库。创建的线程数是动态的。当创建的线程数只有一个时,一切正常。但是,当有多线程执行时,我收到错误:
org.apache.ddlutils.DatabaseOperationException: org.postgresql.util.PSQLException: Cannot commit when autoCommit is enabled.
我猜,也许因为每个线程并行执行,两个线程正在尝试同时写入并给出此错误。
你认为情况如果不是,可能导致这个错误的原因是什么?
否则,如果我说的是问题,我可以做些什么来解决它?
答案 0 :(得分:8)
在您的jdbc代码中,您应该在获取连接后立即关闭自动提交。像这样:
DataSource datasource = getDatasource(); // fetch your datasource somehow
Connection c = null;
try{
c = datasource.getConnection();
c.setAutoCommit(false);