无法关闭数据库连接

时间:2015-02-17 07:03:43

标签: java sql

我正在开发一个基于Java的实用程序,它将一些列值从一个表迁移到另一个表。我的第一个表包含一个ID列,其值是固定类型的(例如,先前在第一个表中插入的Java中的一些枚举类型)

以下是我所遵循的总结步骤:

  1. 获取新的数据库连接并将自动提交设置为false。
  2. 从第一张表中选择唯一类型的ID。
  3. 为每个uniqueu id创建一个线程池。在提交迁移作业时,我将相同的数据库连接传递给之前获得的每个线程。
  4. 每个线程都将值从第一个表迁移到第二个表,最后每个都在执行数据库提交。
  5. 直到这次我的主线程正在等待future.get()。
  6. 完成所有线程后,使用我的主线程,我将删除第一个表(并进行显式提交)并关闭连接。
  7. 此实用程序支持Oracle,UDB和ZOS数据库,适用于Oracle和UDB。但是,对于关闭数据库连接时的ZOS数据库,我遇到异常:

    com.ibm.db2.jcc.a.SqlException: [jcc][t4][10251][10308][3.52.90] java.sql.Connection.close() requested while a transaction is in progress on the connection.
    The transaction remains active, and the connection cannot be closed.
    ERRORCODE=-4471, SQLSTATE=null
    
    1. 这里,在我的主线程中,我首先删除表,然后关闭连接,从而以顺序方式执行这些操作。那为什么我得到上述异常?我做错了什么?

    2. 是否需要为DROP进行显式提交,因为我将autocommit设置为false?

0 个答案:

没有答案