创建的节点不';t似乎已添加到neo4j数据库中

创建的节点不';t似乎已添加到neo4j数据库中,neo4j,Neo4j,我已经从groovy应用程序中在neo4j数据库中创建了几个节点,但是当我使用shell客户端连接到数据库时,它们似乎不在那里 我正在创建的数据库如中所述: 运行应用程序后,我可以看到数据库已在文件系统上创建,但是当我从shell客户端连接时,数据库中似乎没有节点: $ ./neo4j-community-2.1.5/bin/neo4j-shell -path /tmp/foo.db/ -v neo4j-sh (?)$ match (m) return m; +---+ | m | +---+

我已经从groovy应用程序中在neo4j数据库中创建了几个节点,但是当我使用shell客户端连接到数据库时,它们似乎不在那里

我正在创建的数据库如中所述:

运行应用程序后,我可以看到数据库已在文件系统上创建,但是当我从shell客户端连接时,数据库中似乎没有节点:

$ ./neo4j-community-2.1.5/bin/neo4j-shell -path /tmp/foo.db/ -v
neo4j-sh (?)$ match (m) return m;
+---+
| m |
+---+
+---+
0 row

我可能做错了什么?

您没有关闭交易
tx.success()。要完成事务,请使用
tx.close()
。最佳实践是在执行Java时使用try-with-resources块——这涉及自动调用
close()

GraphDatabaseService graphDb = ...;
try (Transaction tx = graphDb.beginTx()) { 
    // do stuff
    tx.success();  
}
由于您的代码有一个
def
,我假设您使用的是groovy,它不支持try with resources。因此,代码如下所示:

def graphDb = ....
Transaction tx = graphDb.beginTx()
try {
    // do stuff e.g. create nodes
    tx.success()
} finally {
    tx.close()
}

您是否使用同一版本的neo4j来处理这两个问题?是的,我相信是这样。我在groovy代码中使用了一个早期版本,但后来shell客户端抱怨它无法打开一个旧的数据库。我看不出为什么它不能工作:(是的,我就是这么想的。我想知道是否需要做任何其他事情来刷新数据库。此外,关机似乎需要很多秒()运行…这似乎很奇怪。就是:)学童错误:)中的示例没有finally块。啊,好的。Try-with-resources是一种我不熟悉的java模式(我的javafoo比它应该的要老!)。
def graphDb = ....
Transaction tx = graphDb.beginTx()
try {
    // do stuff e.g. create nodes
    tx.success()
} finally {
    tx.close()
}