Что означает это исключение BatchUpdateException? - PullRequest
4 голосов
/ 15 марта 2011

Я получаю это исключение BatchUpdateException из оператора stmt.executeBatch ():

BatchUpdateException: A resultset was created for update

В Интернете нет информации об этом сообщении об исключении.Что это значит?Трассировка не содержит ничего полезного, кроме того, что хранимая процедура не удалась.

Ответы [ 3 ]

10 голосов
/ 15 марта 2011

Я бы интерпретировал сообщение как означающее, что оператор SQL, добавленный вами через addBatch(), выдал ResultSet, что означает, что это не обычный оператор INSERT, UPDATE или DELETE.

Операторы, которые должны возвращать результаты, не могут выполняться партиями с JDBC.

Обучающее руководство по JDBC (под заголовком "Обработка исключений в пакетном обновлении") подтверждает это:

Вы получите BatchUpdateException при вызове метода executeBatch, если (1) один из операторов SQL, добавленных в пакет, создает набор результатов (обычно это запрос) или (2) один из операторов SQL в пакете выполняет не выполнен успешно по какой-либо другой причине.

Похоже, вы столкнулись с делом 1.

1 голос
/ 15 марта 2011

Пакетное обновление - это несколько операторов вставки / обновления / удаления, которые обрабатываются базой данных вместе. Обычно это делается по причинам производительности. 1x 1000 вставок намного быстрее, чем 1000x 1 вставка. BatchUpdateException означает, что 1 (или более) операторов чаще всего не выполняются из-за нарушения ограничения. Вам придется посмотреть на хранимую процедуру, чтобы увидеть, что она делает. Mayby, ваш dba может дать вам больше информации о том, что пошло не так.

0 голосов
/ 03 июля 2014

Я опустил один столбец из таблицы.Когда я пытался вставить записи в эту таблицу, я получал BatchUpdateException.

После выполнения приведенной ниже команды проблема была решена

REORG TABLE TABLE_NAME

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...