关于数据库:自上周以来,无法在NEO4J上运行” USING PERIODIC COMMIT”

Unable to run 'USING PERIODIC COMMIT' since last week on NEO4J

我上周在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.的错误。请有人可以向我解释出现了什么问题吗?

screenshot

查询:

1
2
3
4
5
6
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);


简短答案:

使用:auto

前缀您的USING PERIODIC COMMIT查询

此处已进行更改以提供更多上下文,因此错误消息现在包括有关正在发生的事情的更多信息的链接,以及上面的:auto解决方法。

长答案:

这与Neo4j浏览器中最近的功能改进有关,这与使用PERIODIC COMMIT操作有副作用,但是有一种解决方法,并且已经推动了浏览器更新以提供更多上下文和清晰的解决方法。

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

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

您说您正在使用浏览器版本4.0.3。我相信这是昨天发布的,并在其中进行了更改,提供了有关正在发生的事情以及如何使其正常运行的详细信息。遇到该错误时,您现在应该在:auto命令上看到一个带有信息的链接,其中提到了自动提交事务。链接后面应显示带有以下内容的信息卡:

The :auto command will send the Cypher query following it, in an auto committing transaction. In general this is not recommended because of the lack of support for auto retrying on leader switch errors in clusters.
Some query types do however need to be sent in auto-committing transactions, USING PERIODIC COMMIT is the most notable one.

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