2017-01-18 18 views
2

私はSpring Batchを使用していますが、これまでのところすべてがうまく動いています。最近では、ステップ実行コンテキストに関連する問題が発生しています。エラーは、以下である:Springバッチステップの実行コンテキストが大きすぎますか?

Encountered an error saving batch meta data for step generatePlacementSupplement in job vodPlacementJob. This job is now in an unknown state and should not be restarted. org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [UPDATE BATCH_STEP_EXECUTION_CONTEXT SET SHORT_CONTEXT = ?, SERIALIZED_CONTEXT = ? WHERE STEP_EXECUTION_ID = ?]; ERROR: invalid input syntax for type oid

Iは、これらのアプローチのいずれも何を固定しているように見えたTEXTデータ型にスプリングバッチ実行コンテキストテーブルを変更しようとした、ならびに10KにVARCHARの制限を変更する代わりに2500ました問題は。スペースの問題だと思いますが、かなりのパラメータを渡していますが、スペースを増やしても問題は解決しませんでした。

Postgres DBから遠ざかり、メモリ内のソリューションを使用するのが最善の方法でしょうか?

+0

ステップ実行コンテキストはメタデータテーブルに格納され、このタイプのエラーに遭遇する可能性があるため、できるだけ小さくする必要があります。ステップ実行コンテキストサイズを最小限に抑えるために、ステップ実行またはコードをリファクタリングできるかどうかを確認します。 –

答えて

0

Springバッチのソースコードは、実際には列のサイズ(定数があります)を認識し、データを列のサイズに合わせて切り捨てることがわかります。 デフォルトを上書きするために多分使用できるいくつかの方法さえあります。このようなものを無効にすることをお勧めしますかどうかを決定することができますが、私はそれが可能だと信じています。 (だから、データベースの列を変更するだけでなく、バ​​ッチバッチのソースコードを混乱させたり、DBの列サイズを増やしたことを伝えるAPIを少なくとも呼び出さなければならないと言っています。

関連する問題