上周我在我的 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.
请有人向我解释一下出了什么问题吗?
query:
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);
简短的回答:
在 USING PERIODIC COMMIT 查询前加上前缀:auto
推出更改是为了在此处提供更多上下文,因此错误消息现在包含一个链接,用于获取有关正在发生的情况的更多信息以及:auto
上面的解决方法。
长答案:
这与 Neo4j 浏览器中最近的功能改进有关,该功能改进对使用定期提交操作有副作用,但有一种方法可以解决这个问题,并且已经推送了浏览器更新以提供更多上下文和明确的解决方法。
最新一轮 Neo4j 浏览器更新包括这个变化 https://github.com/neo4j/neo4j-browser/pull/1048,它使用事务函数而不是自动提交事务,通过浏览器提供查询自动重试功能,并在遇到因果集群时更好地应对成员更改。
问题是 USING PERIODIC COMMIT 需要在自动提交的事务中运行。这需要一种方法来切换我们是否使用自动提交的事务。
您说您使用的浏览器版本为 4.0.3。我相信昨天已经发布了,并且包含在内提供详细信息的更改 https://github.com/neo4j/neo4j-browser/pull/1057关于发生了什么以及如何让它正常工作。遇到该错误时,您现在应该会看到一个包含有关以下信息的链接::auto
命令,提到自动提交事务。点击链接后应显示一张信息卡,其中包含:
:auto 命令将在自动提交事务中发送其后的 Cypher 查询。一般来说,不建议这样做,因为缺乏对集群中领导者切换错误的自动重试的支持。
然而,某些查询类型确实需要在自动提交事务中发送,USING PERIODIC COMMIT 是最值得注意的一种。
卡上提供了一个示例,用于为 USING PERIODIC COMMIT 查询添加前缀:auto
让它在自动提交事务中执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)