我正在运行 Gremlin v 3.2.5,当我尝试从 Gremlin 控制台连接到 Neo4j 数据库或使用 neo4j-gremlin API 时,我不断收到错误:
Failed to start Neo4j with an older data store version. To enable automatic upgrade, please set configuration parameter "allow_store_upgrade=true"
我使用 neo4j-java-driver 1.4.3 和 neo4j 3.2.3 创建 Neo4j 数据库,就像在 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 版本。预先感谢您的任何想法/反馈!
*编辑:给出了neo4j-java-driver的错误版本号,添加了neo4j版本
最佳答案
tldr; Apache TinkerPop 3.2.5 经测试可与 Neo4j 2.3.3 配合使用。
值得注意的是,考虑到 Neo4j 的 GPL 许可与 Apache 许可冲突,Apache TinkerPop 对 Neo4j 没有直接或默认依赖。因此,在确定要处理的版本时涉及一些间接因素。从技术上讲,TinkerPop 让用户通过选择 neo4j-tinkerpop-api-impl
版本来选择要使用的 Neo4j 版本:
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 仅针对与 Neo4j 2.3 Hook 的 0.3-2.3.3 进行了测试.3:
https://github.com/neo4j-contrib/neo4j-tinkerpop-api-impl/blob/0.3-2.3.3/pom.xml#L23
关于database - 从控制台创建 Neo4j 数据库时,Gremlin 创建什么版本的数据存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45717393/