Liquibase 液化变更集的错误md5sum故障

Liquibase 液化变更集的错误md5sum故障,liquibase,md5sum,Liquibase,Md5sum,我们正在使用liquibase 1.9.5,但我还没有看到该版本的已知错误。简单地说,我们成功地为1.0版本运行了liquibase,但在尝试运行具有附加变更集的1.1版本时,它错误地抱怨了1.0变更集的MD5总和 我们已经在短期内解决了这个问题,只是在DATABASECHANGELOG中取消了md5sum列,但我想知道我是否只是做错了什么 我们的liquibase组织如下: 我们在每个部署上运行的一个master.xml文件,它只包含针对每个软件版本的单独文件的命令(按照正确的顺序) 有问题的

我们正在使用liquibase 1.9.5,但我还没有看到该版本的已知错误。简单地说,我们成功地为1.0版本运行了liquibase,但在尝试运行具有附加变更集的1.1版本时,它错误地抱怨了1.0变更集的MD5总和

我们已经在短期内解决了这个问题,只是在DATABASECHANGELOG中取消了md5sum列,但我想知道我是否只是做错了什么

我们的liquibase组织如下: 我们在每个部署上运行的一个master.xml文件,它只包含针对每个软件版本的单独文件的命令(按照正确的顺序)

有问题的变更集:

<changeSet author="bdeacon" id="foo_schema">
    <preConditions onFail="MARK_RAN">
        <not><tableExists tableName="some_table"/></not>
    </preConditions>
    <sqlFile path="database/initial/foo-schema.sql" />
</changeSet>

引用的foo-schema.sql文件在不同版本之间也保持不变。(它为我们完成整个数据库模式的初始创建,然后包括前提条件中提到的“some_table”。)


我希望liquibase不会期望我们在发布之间手动向每个变更集添加validCheckSum元素…

除非变更集或sql文件的内容发生更改,否则您不需要添加validCheckSum


在foo schema.sql中是否有任何内容(例如SVN版本号或空格/行尾)可能正在更改?

您可以将“runOnChange”changeSet属性设置为true。在这种情况下,每当变更集引用的任何sql文件被更改时,该变更集将再次运行,其校验和将被更新。参见liquibase文档中的章节。当包/过程/触发器代码使用“CREATE或REPLACE”这样的语句时,它特别有用,在这种情况下,您不需要在调用sql文件之前使用drop语句来避免“.ready exists”错误。

validCheckSum技巧确实有效,但您是对的。sql文件中有一个外观上的更改,导致校验和无效。不是空白,但需要svn差异才能真正注意到。
SEVERE: Validation Failed:
     1 change sets check sum
      v1_0.xml::foo_schema::bdeacon::(MD5Sum: ff63b8d1739e6cf1dcaed6a0ef585257)
<changeSet author="bdeacon" id="foo_schema">
    <preConditions onFail="MARK_RAN">
        <not><tableExists tableName="some_table"/></not>
    </preConditions>
    <sqlFile path="database/initial/foo-schema.sql" />
</changeSet>