自上周以来无法在 NEO4J 上运行“USING PERIODIC COMMIT”

K.H*_*ock 4 database neo4j cypher

上周我在我的 MAC 上下载了 NEO4J 的桌面版本。(这是 1.2.4 版)

Neo4j 浏览器版本:4.0.3

Neo4j 服务器版本:3.5.14(企业版)

上周我使用了USING PERIODIC COMMIT加载 CSV的命令,如下所示,这很好地建立了我的关系。但是,几天前,我尝试执行完全相同的命令,但是现在出现错误,显示为Executing queries that use periodic commit in an open transaction is not possible.请有人向我解释发生了什么问题吗?

截屏

询问:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM
"file:/Volumes/Twitter_Dataset/tweets.csv" AS csvLine
MATCH (tweet:Tweet {tweetID: csvLine.tweetID})
MATCH (user:User {username: csvLine.username})
MERGE (user)-[:POSTS]->(tweet);
Run Code Online (Sandbox Code Playgroud)

Inv*_*con 9

简短的回答:

为您的 USING PERIODIC COMMIT 查询添加前缀 :auto

已推出更改以在此处提供更多上下文,因此错误消息现在包含一个链接,以获取有关正在发生的事情的更多信息以及上述:auto解决方法。

长答案:

这与 Neo4j 浏览器中最近的功能改进有关,该改进对 USING PERIODIC COMMIT 操作有副作用,但有一种解决方法,并且已经推送浏览器更新以提供更多上下文和明确的解决方法。

最新一轮的 Neo4j 浏览器更新包括此更改,它使用事务功能而不是自动提交的事务,通过浏览器自动重试功能提供查询,以及在遇到因果集群时更好地应对成员更改的能力。

问题是 USING PERIODIC COMMIT 需要在自动提交的事务中运行。这需要一种方法来切换我们是否使用自动提交的事务。

您说您使用的是 4.0.3 版浏览器。我相信昨天已经发布了,其中包含的更改提供了有关正在发生的事情以及如何使其正常工作的详细信息。遇到该错误时,您现在应该会看到一个包含:auto命令信息的链接,其中提到了自动提交事务。按照链接应该显示一个信息卡:

:auto 命令将在自动提交事务中发送跟随它的 Cypher 查询。通常不推荐这样做,因为不支持自动重试集群中的领导者切换错误。但是,某些查询类型确实需要在自动提交事务中发送,使用 PERIODIC COMMIT 是最值得注意的一种。

卡片上提供了一个示例,用于为 USING PERIODIC COMMIT 查询添加前缀,:auto以使其在自动提交事务中执行。