質問

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top