配置SAP IQ的liquibase.properties时报current_schema未找到错误如何解决?
Liquibase连接SAP IQ报current_schema不存在的解决方案
错误根因
该报错并非驱动配置错误导致,本质是SAP IQ的内置存储过程和标准Sybase数据库存在差异,不支持Liquibase默认调用的current_schema系统存储过程,触发SQL语法错误。
可用解决方法
方法一:显式指定默认模式(最便捷,无侵入)
直接在liquibase.properties配置文件中新增以下两行配置,强制指定操作的目标模式,避免Liquibase主动调用系统过程查询当前模式:
# 替换为你实际使用的模式名 defaultSchemaName: YOUR_SCHEMA_NAME liquibase.schema: YOUR_SCHEMA_NAME
方法二:数据库侧创建适配存储过程
如果不方便修改Liquibase配置,可以在连接的SAP IQ数据库中创建同名的current_schema存储过程,兼容Liquibase的调用逻辑,示例SQL如下:
CREATE PROCEDURE current_schema() RESULT (schema_name VARCHAR(128)) BEGIN SELECT USER_NAME(); END
配置完成后给数据库连接用户授予该存储过程的执行权限即可生效。
方法三:自定义SAP IQ数据库适配逻辑
如果需要长期适配SAP IQ,可扩展Liquibase的数据库适配类,覆盖默认的模式查询逻辑,将调用current_schema的部分替换为SAP IQ支持的SELECT USER_NAME()语法即可。
内容的提问来源于stack exchange,提问作者Adam Cox
相关产品推荐
相关产品推荐

