Liquibase的liquibaseSchemaName参数对接Redshift时不生效问题
问题定位
首先你贴的Bamboo日志提示翻译如下:
[INFO] properties文件中配置的
liquibaseSchemaName参数未被当前任务使用
这个提示已经直接说明问题根因:你写在配置文件里的schema参数根本没有被当前执行的Liquibase任务加载,所以Liquibase才会走默认逻辑,把两张changelog日志表建到public schema下,和你之前执行的schema创建、权限配置SQL没有关系。
修复步骤
- 第一步先排查配置文件加载路径问题
你生成liquibase.properties后移动到了${bamboo_result_artifactId}-${bamboo_result_version}/src/main/resources目录,需要确认Bamboo执行Liquibase任务时的工作目录、类路径是否包含这个位置。绝大多数这类配置不生效问题,都是因为Liquibase启动时没有找到你写的properties文件,自动加载了默认配置,才会出现参数未被使用的提示。你可以在执行Liquibase命令的步骤里加一行打印工作目录文件列表的逻辑,确认配置文件是否在Liquibase的默认扫描路径下。 - 第二步确认Liquibase的调用方式参数映射
如果你不是直接调用Liquibase原生CLI,而是通过Maven/Gradle插件、Bamboo的Liquibase插件执行任务,部分老版本插件不会自动读取properties里的liquibaseSchemaName参数做映射,需要显式传参:- 命令行调用时直接追加参数:
liquibase update --liquibaseSchemaName=liquibase_non_prd - 如果是Maven插件,需要在pom.xml的插件配置块中显式声明:
<plugin> <groupId>org.liquibase</groupId> <artifactId>liquibase-maven-plugin</artifactId> <configuration> <liquibaseSchemaName>liquibase_non_prd</liquibaseSchemaName> <!-- 其余原有配置保持不变 --> </configuration> </plugin>
- 命令行调用时直接追加参数:
- 第三步做权限兜底校验
等配置能正常加载后,确认Liquibase连接数据库使用的账号,拥有liquibase_non_prdschema的USAGE、CREATE权限,避免因为权限不足导致建表失败。你之前配置的默认表权限授权SQL没有问题,不需要调整。
内容的提问来源于stack exchange,提问作者marcin2x4
相关产品推荐
相关产品推荐

