Невозможно запустить 'USING PERIODI C COMMIT' с прошлой недели на NEO4J - PullRequest
2 голосов
/ 04 февраля 2020

Я загрузил настольную версию NEO4J на свой MA C на прошлой неделе. (Это версия 1.2.4)

Neo4j Версия браузера: 4.0.3

Neo4j Версия сервера: 3.5.14 (предприятие)

На прошлой неделе я использовал USING PERIODIC COMMIT Команда загрузки в CSV, как показано ниже, это установило мои отношения в порядке. Однако по состоянию на пару дней go я пытался выполнить ту же самую команду, однако теперь я получаю ошибку, которая отображается как Executing queries that use periodic commit in an open transaction is not possible. Пожалуйста, кто-то может объяснить мне, что пошло не так, пожалуйста?

screenshot

запрос:

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);

1 Ответ

4 голосов
/ 04 февраля 2020

Краткий ответ:

Префикс ваших USING PERIODI C COMMIT запросов с :auto

Изменения были выдвинуты, чтобы предоставить больше контекста здесь, поэтому сообщение об ошибке теперь содержит ссылку для получения дополнительной информации о том, что происходит, а также :auto обходной путь выше.

Длинный ответ:

Это связано с недавнее улучшение функции браузера Neo4j, которое имеет побочный эффект при использовании операций PERIODI C COMMIT, но есть способ обойти это, и обновление браузера уже было выдвинуто, чтобы предоставить больше контекста с явным обходным путем.

Последний раунд обновлений браузера Neo4j включает это изменение , в котором вместо транзакций с автоматической фиксацией используются транзакционные функции, передаются запросы через браузер с возможностью автоматического повторения c и улучшена способность справляться с участником. изменяется при попадании в причинный кластер.

Проблема заключается в том, что ИСПОЛЬЗОВАНИЕ PERIODI C COMMIT должно выполняться в n автоматическая транзакция. Для этого требуется средство переключения между тем, используем ли мы транзакцию с автоматической фиксацией.

Вы сказали, что используете браузер версии 4.0.3. Я полагаю, что он вышел вчера и включил в него изменения, предоставив подробную информацию о том, что происходит и как заставить это работать как обычно. При возникновении этой ошибки вы должны увидеть ссылку с информацией о команде :auto, в которой упоминается автоматическая фиксация транзакций. По ссылке должна отображаться информационная карточка с:

Команда: auto отправит после нее запрос Cypher в транзакции автоматического принятия. В общем случае это не рекомендуется из-за отсутствия поддержки автоматической повторной попытки ошибок коммутатора в кластерах. Однако некоторые типы запросов необходимо отправлять в транзакциях с автоматической фиксацией. ИСПОЛЬЗОВАНИЕ PERIODI C COMMIT является наиболее заметным.

На карте приведен пример префикса USING PERIODI * 1039. * COMMIT-запрос с :auto, чтобы позволить ему выполнить транзакцию автоматической фиксации.

...