为什么在启动Corda节点时出现Liquibase Checksum验证错误

时间:2019-03-16 19:06:57

标签: corda

我已经运行了Corda DB迁移工具,并创建了一个.jar,其中包含表的.sql脚本,这些脚本代表了我的CordApp的状态对象,如https://docs.corda.r3.com/database-management.html#database-management-tool中所述 但是,将.jar放入节点的/ cordapps文件夹后,出现错误,指示校验和验证失败:“ liquibase.exception.ValidationFailedException:验证失败:2个更改集校验和...

您知道如何重置对象的校验和,以使验证不会失败并且可以成功启动Corda Node吗?

谢谢

斯坦

2 个答案:

答案 0 :(得分:0)

截断与迁移相关的表,即databasechangelogdatabasechangeloglock。我认为只截断databasechangelog应该可以解决这个问题。

答案 1 :(得分:0)

如果您更改了以前运行的现有迁移脚本,则可能会发生这种情况。 Corda将尝试对照已运行的脚本检查迁移脚本,并发现这些脚本不再匹配。

例如:“ MyApp” 1.0版具有创建表FooBar的迁移“ init”脚本。在启动节点时,将创建表,并在databasechangelogdatabasechangeloglock表中插入迁移记录。

然后“ MyApp” 1.1版问世,该版本具有“ init”脚本的修改版本。此新脚本与以前在1.0版上运行的脚本的名称匹配,但由于内容已更改,因此不再与校验和匹配。

Kid101的解决方案确实有效,但是您只需要删除databasechangelogdatabasechangeloglock中已更改脚本的相关条目。另外请注意,新的Corda节点将跳过原始迁移并从1.1版开始,这将绕过此问题。