使用不同参数多次执行参数化 liquibase 变更集

woe*_*ann 5 sql oracle liquibase

一段时间以来,我一直在应对 liquibase 挑战,我希望这里有人可以帮助我:

我想使用不同的参数在同一数据库模式上多次执行简单的参数化 liquibase 脚本:

<changeSet id="1" author="me" dbms="Oracle" runOnChange="false" failOnError="true">

   <sql splitStatements="true">
      GRANT SELECT on SOME_VIEW to ${db_user};
   </sql>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

现在,我使用 -Ddb_user=first_user 和 -Ddb_user=second_user 执行 liquibase 一次。第二次运行失败,因为 liquibase 在替换 ${db_user} 参数后计算 checkSum(这很有意义),因此 id/author/filename 和 checkSum 的组合已经存在于 DATABASECHANGELOG 表中。

有解决这个问题的最佳实践方法吗?

提前致谢。

Jen*_*ens 1

有一个runOnChange属性,changeSet它将在每次更改时运行您的变更集。也许这正是您正在寻找的?