liquibase changeSets的错误md5sum失败

时间:2011-08-08 18:50:02

标签: liquibase md5sum

我们正在使用liquibase 1.9.5,但我没有将此视为该版本的已知错误。简短的故事是我们成功运行了liquibase for 1.0版本,但是在尝试运行具有额外changeSet的1.1版本时,它错误地抱怨1.0 changeSets的md5sums。

我们已经在短期内解决了DATABASECHANGELOG中的md5sum列,但我想知道我是否只是做错了。

我们按如下方式组织liquibase: 我们在每个部署上运行的一个主.xml文件,它只为每个版本的软件提供单独文件的命令(按正确的顺序)

<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">
    <include file="v1_0.xml" />
    <include file="v1_1.xml" />
</databaseChangeLog>

所以第一个版本只包含了v1_0.xml,而我们推出的版本包含了上面的内容。

v1_0.xml文件在发行版之间保持不变,但在尝试为新版本调用liquibase时出现以下错误:

SEVERE: Validation Failed:
     1 change sets check sum
      v1_0.xml::foo_schema::bdeacon::(MD5Sum: ff63b8d1739e6cf1dcaed6a0ef585257)

有问题的changeSet:

<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元素添加到版本之间的每个changeSet ......

2 个答案:

答案 0 :(得分:1)

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

在foo-schema.sql中是否存在可能正在更改的SVN版本号或空格/行结尾等内容?

答案 1 :(得分:0)

您可以将“runOnChange”changeSet属性设置为true。在这种情况下,只要更改了changeset引用的任何sql文件,将再次运行changeset并更新其校验和。请参阅liquibase doc中的ChangeSet Check Sums部分。当package / procedure / trigger代码使用类似“CREATE OR REPLACE”的语句时,它尤其有用,在这种情况下,您不需要在使用drop语句调用sql文件之前,以避免“..already exists”错误。