Liquibase可以忽略单个变更集的校验和吗?

时间:2015-12-02 22:51:59

标签: liquibase checksum

我通过Gradle-Liquibase(v 1.1.1)插件使用Liquibase。我有以下变更集......

<changeSet id="create_my_stored_proc" author="davea" dbms="mysql" runAlways="true">
    <sqlFile endDelimiter="//" path="src/main/resources/scripts/create_my_stored_proc.sql" stripComments="true"/>
</changeSet>

是否可以设置一些内容,以便仅为此更改集忽略校验和?基础程序处于不断变化的状态,可以重复更新,而不是每次都创建一个新的变更集,我希望现有的变更集在每个Liquibase构建上运行。

3 个答案:

答案 0 :(得分:0)

您可以添加runAlways和/或runOnChange属性。

答案 1 :(得分:0)

您可以使用<validCheckSum>标签(已知值正确)禁用每个changeSet的检查。

例如,如果先前的变更集的校验和为8:b3d6a29ce3a75940858cd093501151d1,而您想调整该changeSet(但在此步骤已经成功的地方不重新应用它),则可以使用以下方法: >

<changeSet author="me" id="mychangeset">
  <validCheckSum>8:b3d6a29ce3a75940858cd093501151d1</validCheckSum>
  <sqlFile ... />
</changeSet>

答案 2 :(得分:0)

“默认情况下,RunAlways仍然会抛出校验和错误,但是您始终可以使用runOnChange = true或任何方式来更改它。”

看看以liquibase筹集的这张票:https://liquibase.jira.com/browse/CORE-2506

因此,您可以这样做:

<changeSet id="create_my_stored_proc" author="davea" dbms="mysql" runAlways="true">
    <validCheckSum>any</validCheckSum>
    <sqlFile endDelimiter="//" path="src/main/resources/scripts/create_my_stored_proc.sql" stripComments="true"/>
</changeSet>