Какое хранилище данных версии создает Gremlin при создании базы данных Neo4j из консоли?

Я запускаю Gremlin v 3.2.5 и продолжаю получать ошибки, когда пытаюсь подключиться к базе данных Neo4j из консоли Gremlin или с помощью API neo4j-gremlin:

Failed to start Neo4j with an older data store version. To enable automatic upgrade, please set configuration parameter "allow_store_upgrade=true"

Я создаю базу данных Neo4j, используя neo4j-java-driver 1.4.3 и neo4j 3.2.3, как в scala:

  val graphDb = new GraphDatabaseFactory().newEmbeddedDatabaseBuilder(new File(dbPath))
    .setConfig(GraphDatabaseSettings.allow_store_upgrade, "true").newGraphDatabase()

или в консоли Gremlin

gremlin> conf = new BaseConfiguration()
gremlin> conf.setProperty(Neo4jGraph.CONFIG_CONF + "dbms.allow_format_migration", "true")
gremlin> g = Neo4jGraph.open(conf)

Поэтому я хотел бы знать, какую версию хранилища данных использует Gremlin, потому что, похоже, не имеет значения, как я создаю БД, я получаю ошибки, подобные приведенной выше. Я считаю, что моя версия Neo4j создает хранилище данных v0.A.8, и единственное, что я не пробовал, что может сработать, - это понижение версии моей версии Neo4j. Заранее благодарим за любые идеи / отзывы!

* edit: неверный номер версии neo4j-java-driver, добавлена ​​версия neo4j


person Gavin Cowley    schedule 16.08.2017    source источник


Ответы (1)


tldr; Apache TinkerPop 3.2.5 протестирован для работы с Neo4j 2.3.3.

Стоит отметить, что Apache TinkerPop не зависит от Neo4j напрямую или по умолчанию, учитывая лицензию GPL для Neo4j, которая конфликтует с лицензией Apache. Таким образом, определение версии, с которой нужно работать, требует некоторого косвенного внимания. Технически TinkerPop предоставляет пользователю возможность выбрать версию Neo4j для использования, выбрав версию neo4j-tinkerpop-api-impl:

https://github.com/neo4j-contrib/neo4j-tinkerpop-api-impl

совместимый с версией neo4j-tinkerpop-api

https://github.com/neo4j-contrib/neo4j-tinkerpop-api

который используется с версией TinkerPop, которую вы используете. В случае 3.2.5 это будет:

https://github.com/apache/tinkerpop/blob/3.2.5/neo4j-gremlin/pom.xml#L41

Хотя технически вы можете выбрать версию neo4j-tinkerpop-api-impl, стоит отметить, что TinkerPop 3.2.5 тестируется только на версии 0.3-2.3.3, которая привязана к Neo4j 2.3.3:

https://github.com/neo4j-contrib/neo4j-tinkerpop-api-impl/blob/0.3-2.3.3/pom.xml#L23

person stephen mallette    schedule 17.08.2017
comment
Спасибо за ответ, и теперь я могу подключиться к моей базе данных v2.3.3 Neo4j из консоли Gremlin и скоро протестирую более поздние версии Neo4j. Но у меня все еще возникают проблемы с подключением к базе данных с помощью API neo4j-gremlin в моем приложении: val graph: Neo4jGraph = Neo4jGraph.open("dbPath") Ошибка: java.lang.RuntimeException: Error instantiating Neo4j Database for /home/gavin/neo4j/data/databases/graph.db Caused by: java.lang.ClassNotFoundException: org.neo4j.tinkerpop.api.impl.Neo4jFactoryImpl - person Gavin Cowley; 17.08.2017
comment
Он работает из приложения, используя: val graph = Neo4jGraph.open("/home/gavin/neo4j/data/databases/graph.db").getBaseGraph.asInstanceOf[Neo4jGraphAPIImpl].getGraphDatabase Я вижу, вы написали часть API, это лучший способ получить доступ к графику? - person Gavin Cowley; 17.08.2017
comment
Если вам нужен доступ к актуальному API Neo4j, тогда да. Я не думаю, что есть более простой способ. - person stephen mallette; 17.08.2017
comment
Спасибо вам за помощь. Для всех, кто интересуется, похоже, он отлично работает с Tinkerpop / Gremlin 3.2.5, Neo4j 3.2.3 и neo4j-tinkerpop-api-impl 0.6-3.2.2. - person Gavin Cowley; 17.08.2017