corda - Corda Finance 数据库表迁移失败从 Corda 3 升级到 Corda 4
问题描述
在将我的数据库从 Corda 3 升级到 Corda 4 时,我遇到了来自 Corda Finance 的表的以下错误:
net.corda.nodeapi.internal.persistence.CouldNotCreateDataSourceException: Could not create the DataSource: Migration failed for change set migration/cash-schema-v1.changelog-master.sql::initial_schema_for_CashSchemaV1::R3.Corda.Generated:
Reason: liquibase.exception.DatabaseException: ERROR: relation "contract_cash_states" already exists [Failed SQL: create table contract_cash_states (
output_index int4 not null,
transaction_id varchar(64) not null,
ccy_code varchar(3),
issuer_key_hash varchar(130),
issuer_ref bytea,
owner_name varchar(255),
pennies int8,
primary key (output_index, transaction_id)
)]
该表已经存在,Corda 正在尝试再次创建它。
解决方案
Corda Finance 3.3 不包括 liquibase 升级所需的迁移脚本。运行这个迁移脚本将迁移添加到 liquibase 表中会告诉 Corda 该表已经创建。
INSERT INTO <database>.databasechangelog
(ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID)
VALUES ('initial_schema_for_CashSchemaV1', 'R3.Corda.Generated', 'migration/cash-schema-v1.changelog-master.sql', NOW(), 103, '7:0d961b1ab64deec263ba638e609357d0', 'sql', '', 'EXECUTED', NULL, NULL, '3.5.4', '2774745582');
INSERT INTO <database>.databasechangelog
(ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID)
VALUES ('initial_schema_for_CommercialPaperSchemaV1', 'R3.Corda.Generated', 'migration/commercial-paper-schema-v1.changelog-master.sql', NOW(), 98, '7:ee782f59d8cd3b74c7b26f5cfcba3fdd', 'sql', '', 'EXECUTED', NULL, NULL, '3.5.4', '2774745582’);
推荐阅读
- redux - 使用 redux-toolkit 切换步骤更新存储状态而不是视图
- python - Scrapy 使用一个进程(AWS Lambda)运行 2 个蜘蛛并输出到 2 个不同的文件
- mysql - 通过具有不同类型的一列(另一列),同一张表计算余额
- azure-cli - az network lb rule create:错误:参数--resource-group/-g:需要一个参数
- ios - 具有相同代码的适用于 iOS 和 macOS Catalyst 应用程序的 SceneKit 上的不同对象颜色
- c++ - 根据模板的基本类型创建不同的模板类
- python-3.x - 在动态网页中使用 Python 抓取按钮下载 csv
- javascript - Firebase 数据被多次返回
- python - 我有多个区域的状态列,如果所有状态都已完成,我需要在状态列上获取状态
- regex - 从标准输入读取参数时出现意外行为