Spring 如果Postgres中已经创建了hibernate_序列,则Corda无法启动

Spring 如果Postgres中已经创建了hibernate_序列,则Corda无法启动,spring,corda,Spring,Corda,我的Spring和Corda节点共享同一个Posgres数据库。当我首先启动Corda节点,然后启动Spring时,一切都很顺利。但如果我像“docker compose up”这样一起开始做,我会看到以下例外。似乎Corda不喜欢Spring先创建hibernate_序列 我在Corda 4.0中看到了这个问题,但在Corda 3.3中,一切正常 有没有办法避免这种非预期的行为 > ! ATTENTION: This node is running in development mode

我的Spring和Corda节点共享同一个Posgres数据库。当我首先启动Corda节点,然后启动Spring时,一切都很顺利。但如果我像“docker compose up”这样一起开始做,我会看到以下例外。似乎Corda不喜欢Spring先创建hibernate_序列

我在Corda 4.0中看到了这个问题,但在Corda 3.3中,一切正常

有没有办法避免这种非预期的行为

> ! ATTENTION: This node is running in development mode!  This is not safe for production deployment.
[ERROR] 14:50:53+0000 [main] liquibase.severe - master.changelog.json: migration/common.changelog-init.xml::1511451595465-1.3::R3.Corda: Change Set migration/common.changelog-init.xml::1511451595465-1.3::R3.Corda failed.  Error: ERROR: relation "hibernate_sequence" already exists [Failed SQL: CREATE SEQUENCE public.hibernate_sequence MINVALUE 1]
[ERROR] 14:50:53+0000 [main] internal.NodeStartupLogging.invoke - Could not create the DataSource: Migration failed for change set migration/common.changelog-init.xml::1511451595465-1.3::R3.Corda:
     Reason: liquibase.exception.DatabaseException: ERROR: relation "hibernate_sequence" already exists [Failed SQL: CREATE SEQUENCE public.hibernate_sequence MINVALUE 1]: Could not create the DataSource: Migration failed for change set migration/common.changelog-init.xml::1511451595465-1.3::R3.Corda:
     Reason: liquibase.exception.DatabaseException: ERROR: relation "hibernate_sequence" already exists [Failed SQL: CREATE SEQUENCE public.hibernate_sequence MINVALUE 1] [errorCode=euq4co, moreInformationAt=https://errors.corda.net/OS/5.0-SNAPSHOT/euq4co]

这里记录了一个bug:。

确实解决了这个问题。修复程序被推送到57d0040中的Corda master。

我还没有升级到Corda4。因此,我不确定为什么在节点启动时会发生与迁移相关的活动。无论如何,如果您查看
migration/common.changelog init.xml
,您会发现它创建了
hibernate\u序列
,类似于
create sequence hibernate\u sequence start 1 increment 1。因为spring已经创建了
hibernate\u序列
,可能是因为您在实体中的某个地方生成了
@GeneratedValue
。当corda启动时,它无法再次创建
hibernate\u序列
,而且现在它似乎无法从中恢复。所以,做你已经在做的事情。这听起来非常接近,但略有不同。如果我理解正确的话,2393的问题是在某些情况下Hibernate无法创建序列,因此根本没有序列。在我的例子中,当Corda的Hibernate尝试创建序列时,序列已经存在。因此,它在初始数据库设置步骤中失败。所以Corda启动失败。我认为解决方案是在第12行和第13行之间的某个地方添加
前置条件到
common.changelog init.xml
。因为
hibernate\u序列使用非常广泛,如果已经有了,最好不要失败。如果你认为这是正确的方法,我可以准备公关。