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