Вопрос

Я получаю это BatchupDateException от оператора STMT.ExecuteBatch ():

BatchUpdateException: A resultset was created for update

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

Это было полезно?

Решение

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

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

А Учебник JDBC (Под заголовком «Исключения обновления пакетного обновления») подтверждает это:

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

Кажется, вы столкнетесь с случаем 1 здесь.

Другие советы

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

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

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

Reorg Table Table_Name

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top