corda - Corda Enterprise 上的 Yo CorDapp 给出 MissingMigrationException
问题描述
我正在使用 Corda Enterprise 3.1 并尝试使用提供的数据库迁移工具将保管库从 H2 移动到 Oracle 12c。我已经node.conf
使用我知道可以从 IntelliJ 连接的值对配置进行了更改。驱动程序是ojdbc8.jar
Oracle SQL Developer 附带的驱动程序。我有哟!CorDapp安装在节点上。
但是,当我尝试启动节点时出现以下错误:
[错误] 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 at
net.corda.nodeapi.internal.persistence.SchemaMigration.doRunMigration(SchemaMigration.kt:90) ...
解决方案
在 Corda Enterprise 节点上安装针对 Corda 开源开发的 CorDapp 时,您需要为每个 CorDapp 的MappedSchema
s 提供 Liquibase 迁移脚本。
步骤如下:
- 在您的节点上部署 CorDapp(通过将 JAR 复制到
cordapps
文件夹中) - 找出包含新合同状态实体的 MappedSchema 的名称
- 调用数据库管理工具:
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 名称,该工具将为
MappedSchema
CorDapp 中定义的每个生成一个 SQL 文件
- 这将生成一个文件,该文件在节点的基本目录中调用
- 检查在
migration
根目录的文件夹中创建的文件以确保它是正确的- 这是一个标准 SQL 文件,其中包含一些 Liquibase 元数据作为注释
- 创建一个包含该
migration
文件夹的 JAR(通常将其命名为originalCorDappName-migration.jar
),并将此 JAR 与 CorDapp 一起部署(例如,在节点基目录中运行以下命令:)jar cvf /path/to/node/cordapps/MyCordapp-migration.jar migration
。
您可以在此处阅读有关此过程的更多信息:http: //docs.corda.r3.com/database-management.html#node-administrator-installing-a-cordapp-targeted-at-the-open-source-node。
推荐阅读
- macos - 在 Mac 上合并/组合从 Google Drive 下载的多个 ZIP 文件
- unity3d - 初始化组共享变量的最佳实践
- jquery - 删除页面上包含特定单词的所有元素:
- c# - 比较最后三个或 ... 字符并在数组 c# 中查找索引
- javascript - 在没有回调的情况下使用 Node.js 流
- python - Nginx proxy_pass 没有正确打开 Flask 的代理 url
- r - 使用 $ 运算符时循环返回 Null 值
- c# - AD B2C 防止新用户的密码过期
- sql-server - 在 Pyspark 结构化流中仅捕获 CDC 的有效负载?
- flutter - 从图库中挑选的颤振显示图像