我正在使用spring批处理,我需要查询遗留系统中的数据,该系统使用进度数据库。
但是我遇到了这个异常java.sql.SQLException:[DataDirect] [OpenEdge JDBC Driver] [OpenEdge]列Ag-Obs-conf在表PUB.Agenda中的值超过了它的最大长度或精度。
我能够在select中使用SUBSTR部分解决这个问题,但我需要数据库中的所有数据。
我不能以任何方式改变数据库。
有谁能告诉我如何解决这个问题?
谢谢
答案 0 :(得分:0)
OpenEdge数据库将所有数据存储为可变长度。应用程序通常在声明的“SQL Width”属性之外的“过度填充”字段,这是导致您看到错误的原因。
使用dbtool之前的OpenEdge 11.6是调整SQL宽度的标准方法。它快速,安全,有效:
http://knowledgebase.progress.com/articles/Article/P24496
从OpenEdge 11.6版开始,引入了一个新的数据库启动参数:
-SQLWidthUpdate ON
可以自动修复字符数据类型的SQL宽度。
有关此新功能的更多信息,请访问:
https://community.progress.com/community_groups/openedge_rdbms/f/18/t/19534
如果您愿意,还有11.6+中的一些选项可以自动截断返回的数据: