Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解决liquibase升级后liquibase校验和验证失败的问题_Java_Maven_Liquibase_Checksum - Fatal编程技术网

Java 如何解决liquibase升级后liquibase校验和验证失败的问题

Java 如何解决liquibase升级后liquibase校验和验证失败的问题,java,maven,liquibase,checksum,Java,Maven,Liquibase,Checksum,在我的项目中,我刚刚尝试将liquibase从3.2.2升级到3.4.2(jars和maven插件)。编辑:升级到3.3.x时相同。 因此,现在启动应用程序会出现以下错误: Caused by: liquibase.exception.ValidationFailedException: Validation Failed: 4 change sets check sum src/main/resources/changelogs/xxx_add_indices_to_event_t

在我的项目中,我刚刚尝试将liquibase从3.2.2升级到3.4.2(jars和maven插件)。编辑:升级到3.3.x时相同。 因此,现在启动应用程序会出现以下错误:

Caused by: liquibase.exception.ValidationFailedException: Validation Failed:
   4 change sets check sum
   src/main/resources/changelogs/xxx_add_indices_to_event_tables.xml::xxx-add_indices_to_event_tables::xxx is now: 7:0fc8f1faf484a59a96125f3e63431128
这对于4个变更集(共50个),所有变更集都添加了索引,例如:

<createIndex indexName="idx_eventtype" tableName="events">
    <column name="eventtype" type="varchar(64)"/>
</createIndex>


虽然我可以在本地解决这个问题,但在所有运行的环境中手动解决这个问题将是一个巨大的难题。这是一个错误,还是有一些解决方法?

清除校验和对您有用吗?当然,它们将被重新计算。见相关问题。
希望对您有所帮助。

您也可以使用的
子标记将新校验和添加为有效校验和

此外,请检查有关错误的注释。您可以将两个liquibase版本的日志级别设置为“debug”,并查看是否可以在校验和创建的日志输出中找到差异

使用类似这样的子标记

<changeSet id="00000000000009" author="system">
    <validCheckSum>7:19f99d93fcb9909c7749b7fc2dce1417</validCheckSum>
    <preConditions onFail="MARK_RAN">
        <sqlCheck expectedResult="0">SELECT COUNT(*) FROM users</sqlCheck>
    </preConditions>
    <loadData encoding="UTF-8" file="users.csv" separator=";" tableName="users">
        <column name="active" type="boolean" />
        <column name="deleted" type="boolean" />
    </loadData>
</changeSet>

7:19F99D93FCB9909C7749B7FC2DC1417
从用户中选择计数(*)
您应该记住validCheckSum标记的值是变更集的新校验和

mvn liquibase:clearCheckSums

将使用gradle
/gradlew liquibaseClearChecksums清除校验和

您有多少个环境?3,4,5 liquibase做任何事情-你只需应用一个命令!液化酶存在于所有这些环境中,因此最终需要在每个环境中处理这种情况。使用特定于liquibase的命令或摆弄rdbms,并对liquibase表应用您自己的更改。一个小脚本怎么样?它可以配置db模式名称和凭证,您可以将其分发给团队。例如,脚本将调用liquibase。