このBatchUpDateExceptionはどういう意味ですか?
-
24-10-2019 - |
質問
stmt.executebatch()ステートメントからこのbatchupdateexceptionを取得しています。
BatchUpdateException: A resultset was created for update
インターネットには、この例外メッセージに関する情報はありません。どういう意味ですか? Tracebackには、ストアドプロシージャが失敗したこと以外に有用なものは含まれていません。
解決
私はメッセージをあなたが介して追加したSQLステートメントを意味することを意味します addBatch()
生産しました ResultSet
, 、つまり、それはあなたの普通ではありません INSERT
, UPDATE
また DELETE
声明。
結果を返すべきステートメントは、JDBCを使用してバッチで実行することはできません。
JDBCチュートリアル (「バッチ更新の例外」という見出しの下で)確認します。
バッチに追加したSQLステートメントの1つが結果セット(通常クエリ)を生成する場合、メソッドexecuteBatchを呼び出すと、BatchUpDateExceptionが取得されます。他の理由で。
ここでケース1に出くわしているようです。
他のヒント
バッチアップデートは、データベースによって一緒に処理されるいくつかの挿入/更新/削除ステートメントです。これは、パフォーマンスの理由で通常行われます。 1x 1000インサートは、1000x 1の挿入よりもはるかに高速です。 batchUpdateExceptionは、制約駆動のために最も頻繁に1(またはそれ以上)ステートメントが失敗したことを意味します。ストアドプロシージャを調べるには、それが何をしているのかを確認する必要があります。 Mayby Your DBAは、何がうまくいかなかったかについての詳細情報を提供できます。
テーブルから1列を落としました。そのテーブルにレコードを挿入しようとしたとき、私はbatchUpdateExceptionを取得していました。
以下のコマンドを実行した後、問題は解決しました
Reorg Table Table_name