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



我通过Gradle Liquibase(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构建中运行。

您可以使用具有已知良好值的<validCheckSum>标记禁用每个变更集的检查。

例如,如果上一个变更集有一个类似8:b3d6a29ce3a75940858cd093501151d1的校验和,并且您想调整该变更集(但不想在该步骤已经成功的地方重新应用它),那么您可以使用这样的东西:

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

"默认情况下,RunAlways仍会抛出校验和错误,但您可以始终使用runOnChange=true或any来更改此错误。"

看看这张在利基巴斯筹集的门票: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>

如今validCheckSum以XML/SQL/YAML的形式提供。您可以设置一个由validate命令报告的哈希,或者使用通用神奇的哈希1:any跳过变更集的哈希检查。

  • 修改SQL变更集
  • 如何将validchecksum指定为liquibase格式的sql中的任何一个
  • 正在将更改添加到旧的更改日志文件中。Liquibase

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

最新更新