You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Progress 9.1E中PUB._Field表_Format列超限报错求助

解决Progress 9.1E中SYSPROGRESS.SYSCOLUMNS_FULL查询的_Format列长度报错问题

问题场景

执行SELECT * FROM SYSPROGRESS.SYSCOLUMNS_FULL时触发报错:

ERROR [HY000] [DataDirect][ODBC PROGRESS driver][PROGRESS]Column _Format in table PUB._Field has value exceeding its max length or precision。

已知该视图基于PUB._Field与PUB._File的关联查询,尝试解冻_Field表修改_Format的SQL Width为1024、运行DBTool的SQL Width扫描修复工具、ODBC标量函数转义均无效;导出_Field数据后确认最长_Format值仅65字符,推测为版本遗留BUG。

可行解决办法

  • 修改视图定义,规避长度校验
    SYSPROGRESS.SYSCOLUMNS_FULL的定义存储在PUB._Sysviews中,可直接修改其查询逻辑:

    1. 查询原视图定义:
      SELECT _ViewText FROM PUB._Sysviews WHERE _ViewName = 'SYSCOLUMNS_FULL' AND _Owner = 'SYSPROGRESS'
      
    2. 复制原SELECT语句,将PUB._Field._Format替换为SUBSTRING(PUB._Field._Format, 1, 64)或CAST(PUB._Field._Format AS CHAR(64)),重新创建视图:
      CREATE OR REPLACE VIEW SYSPROGRESS.SYSCOLUMNS_FULL AS
      -- 粘贴修改后的完整SELECT语句
      

    注:9.1E版本可能需先删除原有视图再重新创建,具体语法根据环境调整。

  • 编写自定义查询替代视图
    跳过系统视图,直接关联_Field和_File表并显式处理_Format列:

    SELECT 
        f._File,
        f._Field,
        CAST(f._Format AS CHAR(64)) AS _Format,
        fl._FileName
        -- 按需添加其他需要的列(从原视图定义中复制)
    FROM PUB._Field f
    INNER JOIN PUB._File fl ON f._File = fl._File
    
  • 调整ODBC字符集配置
    9.1E版本可能存在字符集隐式转换问题,尝试在ODBC数据源配置中设置与数据库一致的字符集(如ISO-8859-1),或在连接字符串中添加Charset=ISO-8859-1参数。

  • 使用Progress原生工具查询
    用Progress原生Procedure Editor执行查询,若能正常返回结果,说明问题出在ODBC驱动兼容性上,可尝试匹配9.1E版本的DataDirect驱动存档包。

内容的提问来源于stack exchange,提问作者Dai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:01:06