2016-12-21 4 views
-1

私はスプリングバッチを使用しており、進捗データベースを使用するレガシーシステムからデータを照会する必要があります。Springバッチを使用してProgressで最大長または精度を解決

ただし、私はこの例外があります。java.sql.SQLException:[DataDirect] [OpenEdge JDBCドライバ] [OpenEdge]テーブルPUB.AgendaのAg-Obs-confカラムの値が最大長または精度を超えています。

selectでSUBSTRを使用してこの問題を部分的に解決できましたが、データベースのすべてのデータが必要です。

私は決してデータベースを変更することはできません。

誰も私にこの問題を解決する方法を教えてもらえますか?

ありがとう

答えて

0

OpenEdgeデータベースは、すべてのデータを可変長として格納します。アプリケーションでは、宣言された「SQL Width」属性を超えてフィールドを「オーバーロード」することがよくあります。これは、表示されるエラーの原因となります。

dbtoolを使用する前のOpenEdge 11.6はSQLの幅を調整する標準的な方法です。それは、高速で安全かつ効果的である:

-SQLWidthUpdate

ON自動的に文字のSQL幅を修正することができます:

http://knowledgebase.progress.com/articles/Article/P24496

は、新しいデータベースの起動パラメータが導入されたOpenEdgeバージョン11.6からスタートデータ型。この新機能について

詳しい情報はここで見つけることができます:

http://knowledgebase.progress.com/articles/Article/How-to-enable-Authorized-Data-Truncation-in-a-JDBC-or-ODBC-connection/p

https://community.progress.com/community_groups/openedge_rdbms/f/18/t/19534

は、それはあなたが好むものであれば、自動的に返されたデータを切り捨てるように11.6+でいくつかのオプションもあります。

+0

これはおそらく動作しますが、データベースへのアクセス権はありません。コードによって、この問題を回避できますか? – user2888055

+0

通常、DBAにdbtoolを実行するように依頼します.SQLはOpenEdgeデータベースで使用されるどこでもルーチンプロシージャである必要があります。ローカル管理者が拒否した場合は、SUBSTRアプローチを使用して回避することができます.DBが11.6以上の場合は、最後のリンクのJDBC設定手順に従います。 –

関連する問題