我已经运行了Corda DB迁移工具,并创建了一个.jar,其中包含表的.sql脚本,这些脚本代表了我的CordApp的状态对象,如https://docs.corda.r3.com/database-management.html#database-management-tool中所述 但是,将.jar放入节点的/ cordapps文件夹后,出现错误,指示校验和验证失败:“ liquibase.exception.ValidationFailedException:验证失败:2个更改集校验和... “
您知道如何重置对象的校验和,以使验证不会失败并且可以成功启动Corda Node吗?
谢谢
斯坦
答案 0 :(得分:0)
截断与迁移相关的表,即databasechangelog
和databasechangeloglock
。我认为只截断databasechangelog
应该可以解决这个问题。
答案 1 :(得分:0)
如果您更改了以前运行的现有迁移脚本,则可能会发生这种情况。 Corda将尝试对照已运行的脚本检查迁移脚本,并发现这些脚本不再匹配。
例如:“ MyApp” 1.0版具有创建表FooBar
的迁移“ init”脚本。在启动节点时,将创建表,并在databasechangelog
和databasechangeloglock
表中插入迁移记录。
然后“ MyApp” 1.1版问世,该版本具有“ init”脚本的修改版本。此新脚本与以前在1.0版上运行的脚本的名称匹配,但由于内容已更改,因此不再与校验和匹配。
Kid101的解决方案确实有效,但是您只需要删除databasechangelog
和databasechangeloglock
中已更改脚本的相关条目。另外请注意,新的Corda节点将跳过原始迁移并从1.1版开始,这将绕过此问题。