2016-12-21 1 views
-1

J'utilise spring batch, et j'ai besoin de rechercher des données à partir d'un système existant, qui utilise la base de données de progression.Résoudre la longueur maximale ou la précision avec Progress en utilisant Spring Batch

Cependant, je suis avec cette exception java.sql.SQLException: [DataDirect] [Pilote JDBC OpenEdge] [OpenEdge] Colonne Ag-Obs-conf dans la table PUB.Agenda a une valeur dépassant sa longueur maximale ou la précision.

J'ai été en mesure de résoudre partiellement ce problème en utilisant un SUBSTR dans le select, mais j'ai besoin de toutes les données de la base de données.

Et je ne peux en aucun cas changer la base de données.

Quelqu'un peut-il me donner une idée de comment résoudre ce problème?

Merci

Répondre

0

Les magasins de base de données OpenEdge toutes les données en longueur variable. Les applications très communément "surcharger" les champs au-delà de l'attribut "SQL Width" déclaré qui est à l'origine de l'erreur que vous voyez.

Avant OpenEdge 11.6, utiliser dbtool est la manière standard d'ajuster la largeur SQL. Il est rapide, sûr et efficace:

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

À partir de la version OpenEdge 11.6 un nouveau paramètre de démarrage de la base de données a été introduite:

-SQLWidthUpdate SUR

qui peut corriger automatiquement la largeur SQL de caractère Types de données.

Plus d'informations sur cette nouvelle fonctionnalité peut être trouvée ici:

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

Il y a aussi quelques options 11.6+ tronquer automatiquement les données renvoyées si c'est ce que vous préférez:

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

+0

Cela fonctionnera probablement, mais je n'ai aucun accès à la base de données. Par code, puis-je contourner ce problème? – user2888055

+0

Vous demanderiez généralement à l'administrateur de base de données d'exécuter dbtool - il devrait s'agir d'une procédure de routine partout où SQL est utilisé avec une base de données OpenEdge. Si les administrateurs locaux refusent, vous pouvez contourner ce problème avec votre approche SUBSTR ou, si la base de données est 11.6 ou mieux, en suivant les instructions de configuration de JDBC dans le dernier lien. –