Не удалось закрыть соединение с базой данныхJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Не удалось закрыть соединение с базой данных

Сообщение Anonymous »

Я работаю над утилитой на основе Java, которая переносит некоторые значения столбцов из одной таблицы в другую. Моя первая таблица содержит столбец идентификаторов, значения которого имеют фиксированный тип (например, некоторые типы перечислений в Java, которые были вставлены ранее в первую таблицу).

Ниже приведены общие шаги, которые я выполняю:
  • Получение нового соединения с базой данных и установка autocommit как false.
  • Выбор уникального типа идентификаторов из первой таблицы.
  • Создание пула потоков для каждого уникального идентификатора. Отправляя задание миграции, я передаю одно и то же соединение с базой данных каждому потоку, полученному ранее.
  • Каждый поток переносит значения из первой таблицы во вторую таблицу, и в конце каждый выполняет фиксацию базы данных.
  • До этого времени мой основной поток ожидает Future.get().
  • Как только все потоки завершатся, в основном потоке я удаляю первую таблицу (и делаю явную фиксацию) и закрываю соединение.
Эта утилита поддерживается для баз данных 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
  • Здесь, в моем основном потоке, я сначала удаляю таблицу, а затем закрываю соединение, делая это последовательно. Тогда почему я получаю вышеуказанное исключение? Что я делаю неправильно?
  • Нужно ли делать явную фиксацию для DROP, поскольку я устанавливаю для autocommit значение false?


Подробнее здесь: https://stackoverflow.com/questions/285 ... connection
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»