Corda Enterprise上的Yo CorDapp提供MissingMigrationException

时间:2018-08-08 10:48:19

标签: corda

我正在使用Corda Enterprise 3.1,并尝试使用提供的数据库迁移工具将文件库从H2迁移到Oracle 12c。我使用我知道可以从IntelliJ连接的值在node.conf配置中进行了更改。驱动程序是Oracle SQL Developer附带的Oracle ojdbc8.jar。我在节点上安装了Yo! CorDapp

但是,尝试启动节点时出现以下错误:

  

[ERROR] 2018-08-07T22:43:32,666Z [main] errors.errorAndExit-失败   创建数据源。请检查是否正确的JDBC驱动程序是   安装在以下文件夹之一中:-/ apps / team / drivers / jdbc

     

原因   net.corda.nodeapi.internal.persistence.MissingMigrationException:否   为架构定义的迁移:net.corda.yo.YoState $ YoSchema v1

     

net.corda.nodeapi.internal.persistence.MissingMigrationException:否   为模式定义的迁移:net.corda.yo.YoState $ YoSchema v1,位于

     

net.corda.nodeapi.internal.persistence.SchemaMigration.doRunMigration(SchemaMigration.kt:90)   ...

1 个答案:

答案 0 :(得分:2)

在Corda Enterprise节点上安装针对Corda Open-Source开发的CorDapp时,您需要为每个CorDapp的MappedSchema提供一个Liquibase迁移脚本。

步骤如下:

  1. 在您的节点上部署CorDapp(通过将JAR复制到cordapps文件夹中)
  2. 找出包含新合同状态实体的MappedSchema的名称
  3. 调用数据库管理工具:java -jar corda-tools-database-manager-3.1.jar --base-directory /path/to/node --create-migration-sql-for-cordapp com.example.MyMappedSchema
    • 这将在节点的基本目录中名为my-mapped-schema.changelog-master.sql的文件夹中生成名为migration的文件
    • 如果您未指定实际的MappedSchema名称,则该工具将为CorDapp中定义的每个MappedSchema生成一个SQL文件
  4. 检查在根目录的migration文件夹中创建的文件,以确保它是正确的
    • 这是一个标准的SQL文件,其中带有一些Liquibase元数据作为注释
  5. 创建一个包含migration文件夹的JAR(通常将其命名为originalCorDappName-migration.jar),并将此JAR与CorDapp一起部署(例如,在节点基本目录中运行以下命令:{{1 }}。

您可以在此处了解有关此过程的更多信息:http://docs.corda.r3.com/database-management.html#node-administrator-installing-a-cordapp-targeted-at-the-open-source-node