TEIID Spring Boot集成双SQL Server时遇QueryParserException错误
TEIID31100解析错误的解决方法
问题根源
parameter是TEIID的保留关键字,直接在SELECT语句中作为列名使用时,TEIID会将其误判为语法指令,导致解析失败。
修复步骤
修改@SelectQuery中的SQL语句,将parameter列名用方括号包裹(适配SQL Server语法),明确指定这是列名而非关键字:
@SelectQuery("SELECT id, [parameter], value, created_date FROM database63.DAC_SYS_MEMORY" + " UNION ALL" + " SELECT id, [parameter], value, created_date FROM database54.DAC_SYS_MEMORY")
也可以使用双引号包裹(符合通用SQL标准,需确保TEIID配置兼容):
@SelectQuery("SELECT id, \"parameter\", value, created_date FROM database63.DAC_SYS_MEMORY" + " UNION ALL" + " SELECT id, \"parameter\", value, created_date FROM database54.DAC_SYS_MEMORY")
注意事项
- TEIID对保留关键字的校验严格,若数据库列名与TEIID保留关键字重名,必须进行转义处理
- 转义方式建议与底层数据库的语法规则保持一致,SQL Server推荐使用
[]
内容的提问来源于stack exchange,提问作者SamanthPadala
相关产品推荐
相关产品推荐

