使用Java程序更新Neo4j数据库

4

我正在使用Java程序通过输入一个Excel文件创建Neo4j图形数据库(.DB文件)。我可以通过另一个Excel文件更新此.DB文件,但是一旦在Neo4j中打开此.DB文件后,我无法通过输入另一个Excel文件来更新此现有数据库,它会显示异常。

Exception in thread "main" java.lang.RuntimeException: Error starting org.neo4j.kernel.EmbeddedGraphDatabase, D:\innoneuron\Transform\Feature1_Automatic_Tagging\Feature1_Automatic_Tagging\test.db
    at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:366)
    at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:59)
    at org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:91)
    at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:181)
    at org.neo4j.graphdb.factory.GraphDatabaseFactory.newEmbeddedDatabase(GraphDatabaseFactory.java:71)
    at feature3.AutomatedGraph.startDb(AutomatedGraph.java:88)
    at feature3.AutomatedGraph.main(AutomatedGraph.java:50)
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.impl.transaction.XaDataSourceManager@5a4aa2f2' was successfully initialized, but failed to start. Please see attached cause exception.
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:513)
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
    at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:343)
    ... 6 more
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.impl.nioneo.xa.NeoStoreXaDataSource@f0f2775' was successfully initialized, but failed to start. Please see attached cause exception.
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:513)
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
    at org.neo4j.kernel.impl.transaction.XaDataSourceManager.start(XaDataSourceManager.java:164)
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:507)
    ... 8 more
Caused by: org.neo4j.kernel.impl.storemigration.StoreUpgrader$UpgradingStoreVersionNotFoundException: 'neostore.nodestore.db' does not contain a store version, please ensure that the original database was shut down in a clean state.
    at org.neo4j.kernel.impl.storemigration.UpgradableDatabase.checkUpgradeable(UpgradableDatabase.java:78)
    at org.neo4j.kernel.impl.storemigration.StoreMigrator.needsMigration(StoreMigrator.java:135)
    at org.neo4j.kernel.impl.storemigration.StoreUpgrader.getParticipantsEagerToMigrate(StoreUpgrader.java:268)
    at org.neo4j.kernel.impl.storemigration.StoreUpgrader.migrateIfNeeded(StoreUpgrader.java:143)
    at org.neo4j.kernel.impl.nioneo.xa.NeoStoreXaDataSource.start(NeoStoreXaDataSource.java:344)
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:507)
    ... 11 more

有没有办法使用不同的输入Excel文件更新这个.DB文件? 提前感谢。
2个回答

2
我在打开数据库后更新它时遇到的问题是由于安装的Neo4j数据库版本与项目中使用的jar文件版本不同。 请使用与Neo4j版本相同的jar文件版本。 谢谢。

2

根据异常的初始原因:

请确保原始数据库在干净的状态下关闭

你确定在创建结束时正确地关闭了数据库,并且在导入第一个Excel文件时吗?在退出之前,您需要调用GraphDatabaseService.shutdown()


是的,我在程序创建结束时关闭了数据库。但问题是,一旦在Neo4j中打开了.DB文件,我就无法更新它。但如果我不打开这个.DB文件,那么它是可以更新的。我正在使用Neo4j 3.0.6(exe)版本。 - vin
你应该更新你的问题,加入相关场景的那一部分,然后描述导致无法重新打开数据库的全部步骤。 - Frank Pavageau
我已经更新了问题,希望能得到能够帮助我解决问题的答案。我尝试过关闭数据库后再试,但问题仍未解决。 - vin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接