Corda 当节点使用postgresql和架构时,结果集大于一行

Corda 当节点使用postgresql和架构时,结果集大于一行,corda,Corda,我目前正在尝试让2个节点(一个公证人,一个普通节点)使用相同的Postgresql DB存储数据(而不是嵌入的H2),但每个节点都有不同的模式(节点模式,公证人模式) 啊,我用的是非企业版,顺便说一句,4.3版 公证人节点是第一个启动的节点,它在公证人模式中创建所需的表,所有这些看起来都很好 但当“正常”节点启动时,它会崩溃,原因是: [ERROR] 10:17:50+0000 [main] changelog.ChangeSet. - Change Set migration/node-cor

我目前正在尝试让2个节点(一个公证人,一个普通节点)使用相同的Postgresql DB存储数据(而不是嵌入的H2),但每个节点都有不同的模式(节点模式,公证人模式)

啊,我用的是非企业版,顺便说一句,4.3版

公证人节点是第一个启动的节点,它在公证人模式中创建所需的表,所有这些看起来都很好

但当“正常”节点启动时,它会崩溃,原因是:

[ERROR] 10:17:50+0000 [main] changelog.ChangeSet. - Change Set migration/node-core.changelog-postgres-blob.xml::modify checkpoint_value column type::R3.Corda failed.  Error: Migration failed for change set mig │
│      Reason:                                                                                                                                                                                                      │
│           master.changelog.json : liquibase.precondition.core.SqlPrecondition@7c682e26 : Result set larger than one row                                                                                           │
│  {changeSet=migration/node-core.changelog-postgres-blob.xml::modify checkpoint_value column type::R3.Corda, databaseChangeLog=master.changelog.json}                                                              │
│ [ERROR] 10:17:50+0000 [main] internal.NodeStartupLogging. - Exception during node registration: Could not create the DataSource: Migration failed for change set migration/node-core.changelog-postgres-blob.xml: │
│      Reason:                                                                                                                                                                                                      │
│           master.changelog.json : liquibase.precondition.core.SqlPrecondition@7c682e26 : Result set larger than one row                                                                                           │
│  [errorCode=14m37zv, moreInformationAt=https://errors.corda.net/OS/4.3/14m37zv]                                                                                                                                   │
[ERROR] 10:17:50+0000 [main] internal.NodeStartupLogging. - Exception during node startup: net.corda.core.utilities.Try$Failure cannot be cast to net.corda.core.utilities.Try$Success [errorCode=rmnkpl, moreInf │

公证人的node.conf如下所示:

dataSourceProperties: {
    dataSourceClassName="org.postgresql.ds.PGSimpleDataSource"
    dataSource.url="jdbc:postgresql://psql-path:5432/postgres?currentSchema=notary"
    dataSource.user="dbUser"
    dataSource.password="xxxxxx"
}
“正常”节点的值为:

dataSourceProperties: {
    dataSourceClassName="org.postgresql.ds.PGSimpleDataSource"
    dataSource.url="jdbc:postgresql://psql-path:5432/postgres?currentSchema=node"
    dataSource.user="dbUser"
    dataSource.password="xxxxxx"
}

如您所见,唯一的区别是?currentSchema值

我错过什么了吗

编辑:

在报告中,他们说:

如果PostgresSQL数据库为不同的Corda节点托管多个模式实例(使用JDBC URL currentSchema=my_模式),则需要为第一个实例之后添加的每个后续模式手动创建hibernate_sequence对象。Corda没有为Hibernate提供模式名称空间设置,并且可能不会创建序列对象。运行DDL语句并将my_模式替换为您的模式命名空间:

我已经这样做了,当连接到db时,我可以看到我创建的两个表的模式的taht。虽然对于公证人,我有32个表,对于“正常”节点只有26个表。

的经典案例,解决方案是:

如果PostgresSQL数据库为不同的Corda节点托管多个模式实例(使用JDBC URL currentSchema=my_模式),则需要为第一个实例之后添加的每个后续模式手动创建hibernate_sequence对象。Corda没有为Hibernate提供模式名称空间设置,并且可能不会创建序列对象。运行DDL语句并将my_模式替换为您的模式命名空间:


我尝试对不同的节点使用不同的方案。但我失败了。因为有一些自动创建的表没有scheme。所以我决定在同一个db服务器上使用不同的数据库实例


我想这个方法可能会减轻你的痛苦。

哦,真的吗?到目前为止,我的设置没有发现任何问题(每个节点1个模式)。你能告诉我更多关于哪些桌子给你带来麻烦吗?