В настоящее время я пытаюсь, чтобы 2 узла (один нотариус, один нормальный узел) использовали одну и ту же базу данных Postgresql для хранения данных (вместо встроенного H2), но с разными схемами для каждого (схема узла, нотариус схема).
Ах, я использую не корпоративную версию btw версии 4.3.
Нотариальный узел запускается первым, он создает необходимые таблицы в нотариальной схеме там все вроде нормально.
Но когда «нормальный» узел загружается, он говорит sh:
[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.
Я что-то упустил?
РЕДАКТИРОВАТЬ:
в do c, они говорят:
Если ваш Postgres База данных SQL содержит несколько экземпляров схемы (используя URL-адрес JDB C currentSchema = my_schema) для различных узлов Corda. создайте объект последовательности hibernate_sequence вручную для каждой последующей схемы, добавленной после первого экземпляра. Corda не предоставляет Hibernate настройку пространства имен схемы, и объект последовательности может быть не создан. Запустите оператор DDL и замените my_schema пространством имен вашей схемы:
Я сделал это, и при подключении к БД я вижу, что для обеих схем у меня есть созданные таблицы. Хотя для нотариуса у меня есть 32 таблицы и только 26 для «нормального» узла.