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

时间:2015-04-24 13:02:03

标签: 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>

现在我使用-Ddb_user = first_user而不是-Ddb_user = second_user执行liquibase一次。第二次运行失败,因为liquibase在替换$ {db_user}参数后计算checkSum(完全合理),因此ID / author / filename和checkSum的组合已存在于DATABASECHANGELOG表中。

有没有最佳实践方法来解决这个问题?

提前致谢。

2 个答案:

答案 0 :(得分:1)

changeSet有一个runOnChange属性,每次更改时都会运行您的变更集。也许这就是你想要的?

答案 1 :(得分:1)

您始终可以使用<validCheckSum>any</validCheckSum>not_press

这里有一个问题可以解释这个决定:https://liquibase.jira.com/browse/CORE-2506