Neo4j:在预定义的数据库

时间:2015-12-28 16:36:51

标签: java rest neo4j

OS: Kubuntu 15.10
Neo4J版本: 2.3.1
Java版本: JDK 1.8

运行neo4j实例有两种方法  1.服务器
 2.本地

在服务器中我们需要运行/bin/neo4j start并且服务器配置文件中指定的路径必须为空,否则会抛出错误

在本地模式即shell模式下,/bin/neo4j-shell我们可以再次运行localy,或者我们可以指定ip:port,不幸的是我们无法使用ip:port指定db:path

我正在学习本教程:http://www.tutorialspoint.com/neo4j/neo4j_native_java_api_example.htm,最后,对于Windows,我们可以选择数据库,我们可以在Web Gui中查看localhost:7474

问题:

如何在预先存在的neo4j数据库上使用WebUI管理控制台本地/远程启动服务器?

修改

Neo4J.java

package com.tp.neo4j.java.examples;

import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;

public class Neo4J {
public static void main(String[] args) {
    GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();
    GraphDatabaseService db= dbFactory.newEmbeddedDatabase("data/graph.db");
    try (Transaction tx = db.beginTx()) {

        Node javaNode = db.createNode(Tutorials.JAVA);
        javaNode.setProperty("TutorialID", "JAVA001");
        javaNode.setProperty("Title", "Learn Java");
        javaNode.setProperty("NoOfChapters", "25");
        javaNode.setProperty("Status", "Completed");                

        Node scalaNode = db.createNode(Tutorials.SCALA);
        scalaNode.setProperty("TutorialID", "SCALA001");
        scalaNode.setProperty("Title", "Learn Scala");
        scalaNode.setProperty("NoOfChapters", "20");
        scalaNode.setProperty("Status", "Completed");

        Relationship relationship = javaNode.createRelationshipTo
        (scalaNode,TutorialRelationships.JVM_LANGIAGES);
        relationship.setProperty("Id","1234");
        relationship.setProperty("OOPS","YES");
        relationship.setProperty("FP","YES");

        tx.success();
    }
       System.out.println("Done successfully");
  }
}


服务器属性:
org.neo4j.server.database.location=data/graph.db

Neo4j属性:

allow_store_upgrade=true
remote_shell_port=1337

Java中的嵌入式服务器属性:

GraphDatabaseService db =dbFactory.newEmbeddedDatabase(new File("/opt/neo4j/data/graph.db")); 

重现错误的步骤:

  1. 运行Java应用程序。它在指定的路径中创建db。
  2. 修改conf文件夹中的服务器属性以指向java
  3. 中指定的路径
  4. 启动neo4j:sudo neo4j start [如果服务器属性中提到的数据库路径为空,则Neo4J成功启动]
  5. 错误

    WARNING: Max 1024 open files allowed, minimum of 40 000 recommended. See the Neo4j manual.
    Starting Neo4j Server.../opt/neo4j/data/log was missing, recreating...
    WARNING: not changing user
    process [3484]... waiting for server to be ready.... Failed to start within 120 seconds.
    Neo4j Server may have failed to start, please check the logs. 
    

    日志:

    2015-12-29 07:35:55.276+0530 INFO  Successfully shutdown Neo4j Server
    2015-12-29 07:35:55.277+0530 ERROR Failed to start Neo4j: Starting Neo4j failed: Component 'org.neo4j.server.database.LifecycleManagingDatabase@4ae673d' was successfully initialized, but failed to start. Please see attached cause exception. Starting Neo4j failed: Component 'org.neo4j.server.database.LifecycleManagingDatabase@4ae673d' was successfully initialized, but failed to start. Please see attached cause exception.
    org.neo4j.server.ServerStartupException: Starting Neo4j failed: Component 'org.neo4j.server.database.LifecycleManagingDatabase@4ae673d' was successfully initialized, but failed to start. Please see attached cause exception.
        at org.neo4j.server.exception.ServerStartupErrors.translateToServerStartupError(ServerStartupErrors.java:67)
        at org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:234)
        at org.neo4j.server.Bootstrapper.start(Bootstrapper.java:97)
        at org.neo4j.server.CommunityBootstrapper.start(CommunityBootstrapper.java:48)
        at org.neo4j.server.CommunityBootstrapper.main(CommunityBootstrapper.java:35)
    Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.server.database.LifecycleManagingDatabase@4ae673d' was successfully initialized, but failed to start. Please see attached cause exception.
        at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:462)
        at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:111)
        at org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:194)
        ... 3 more
    Caused by: java.lang.RuntimeException: Error starting org.neo4j.kernel.impl.factory.CommunityFacadeFactory, /opt/neo4j/data/graph.db
        at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:143)
        at org.neo4j.kernel.impl.factory.CommunityFacadeFactory.newFacade(CommunityFacadeFactory.java:43)
        at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:108)
        at org.neo4j.server.CommunityNeoServer$1.newGraphDatabase(CommunityNeoServer.java:66)
        at org.neo4j.server.database.LifecycleManagingDatabase.start(LifecycleManagingDatabase.java:95)
        at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:452)
        ... 5 more
    Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.NeoStoreDataSource@2895e461' was successfully initialized, but failed to start. Please see attached cause exception.
        at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:462)
        at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:111)
        at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:112)
        at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:452)
        at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:111)
        at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:139)
        ... 10 more
    Caused by: org.neo4j.kernel.impl.storemigration.StoreUpgrader$UnexpectedUpgradingStoreVersionException: '/opt/neo4j/data/graph.db/neostore.nodestore.db' has a store version number that we cannot upgrade from. Expected 'v0.A.3' but file is version '\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00'.
        at org.neo4j.kernel.impl.storemigration.UpgradableDatabase.checkUpgradeable(UpgradableDatabase.java:96)
        at org.neo4j.kernel.impl.storemigration.StoreUpgrader.migrateIfNeeded(StoreUpgrader.java:149)
        at org.neo4j.kernel.NeoStoreDataSource.upgradeStore(NeoStoreDataSource.java:636)
        at org.neo4j.kernel.NeoStoreDataSource.start(NeoStoreDataSource.java:527)
        at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:452)
        ... 15 more
    

    注意:我们只能导入csv文件,我们无法导入预先存在的neo4j数据库。

    注意:尝试Java Rest Binding,但似乎有很多问题,Maven问题,依赖性问题。

2 个答案:

答案 0 :(得分:0)

不确定你在问什么。通过在conf/neo4j-server.properties中指向数据库存储位置的数据库路径,可以在磁盘上的数据库文件上使用Admin界面运行Neo4j。

答案 1 :(得分:0)

<强>答案:

确保jdbc驱动程序版本与您的neo4j服务器版本匹配。

Neo4J服务器下载: Neo4j v2.3.1

POM依赖

 <dependency>
     <groupId>org.neo4j</groupId>
     <artifactId>neo4j</artifactId>
     <version>2.3.1</version>
 </dependency>