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

更新DBeaver后Snowflake存储过程报SQL编译错误1003如何修复

报错信息

更新DBeaver版本后查看Snowflake存储过程时,触发如下SQL编译错误,其余非存储过程类数据均可正常访问:

SQL Error [1003] [42000]: SQL compilation error:  
parse error line 1 at position 28 near '95'.  
SQL compilation error:  
parse error line 1 at position 28 near '95'.  
SQL compilation error:  
parse error line 1 at position 28 near '95'.
问题根因

该报错和存储过程本身的逻辑代码无关,是DBeaver版本更新后Snowflake元数据读取逻辑存在兼容bug导致:

  • 新版本DBeaver默认从INFORMATION_SCHEMA.PROCEDURES拉取存储过程元数据时,未正确适配存储过程定义体中包含的$$美元引用、反引号模板字符串、嵌套双引号等特殊字符,会错误截断元数据查询SQL,截断位置刚好残留字符片段95,触发语法解析错误。
  • 部分DBeaver版本更新时会自动升级内置的Snowflake JDBC驱动,高版本JDBC返回的存储过程元数据带有额外转义符,DBeaver未做对应转义处理,也会触发同类解析错误。
修复方案

按优先级从高到低尝试以下操作即可解决:

  • 调整连接驱动属性(推荐,无需降级软件版本)
    1. 右键对应Snowflake连接,选择「编辑连接」
    2. 切换到「驱动属性」标签页,修改以下参数值:
      • metadataUseInformationSchema:设为false,禁用默认从INFORMATION_SCHEMA拉取元数据的逻辑,改用原生SHOW命令读取对象信息
      • readProceduresWithColumns:设为false,关闭存储过程参数自动解析功能,避免拼接非法SQL
    3. 保存配置后断开重连,再尝试查看存储过程即可。
  • 回退Snowflake JDBC驱动版本
    如果调整参数后仍报错,可回退JDBC驱动解决兼容问题:
    1. 编辑连接页面点击「编辑驱动设置」,切换到「库」标签页
    2. 删除当前自带的高版本Snowflake JDBC驱动包,手动添加3.13.x稳定版JDBC的jar包
    3. 保存后重连即可。
  • 临时绕过方案
    若暂时不想修改连接配置,可直接手动执行SQL查询存储过程DDL,避开DBeaver的自动元数据拉取逻辑:
    SELECT GET_DDL('PROCEDURE', '"REPLICA_RtHSNMaster"(VARCHAR, VARCHAR)') AS PROCEDURE_DEFINITION;
    
    查询时存储过程名需要加双引号匹配大小写,参数仅填写类型即可,无需传入参数名。

你提供的REPLICA_RtHSNMaster存储过程语法本身无编译问题,不需要修改存储过程代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:12:23