Что означает эта BatchupDateException?
-
24-10-2019 - |
Вопрос
Я получаю это 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