知识库

错误“无法识别的交易 ID。交易可能已超时并回滚”的解释

通过 Neo4j 事务性 Cypher HTTP 端点 提交请求时,可能会遇到以下错误

Unrecognized transaction id.
Transaction may have timed out and been rolled back

此错误可能是由于交易过期日期/时间已到。默认情况下,org.neo4j.server.transaction.timeout 描述了交易中不活动的秒数,在此期间交易将自动回滚。默认值为 60 秒,但可以通过添加

org.neo4j.server.transaction.timeout=XXX

将 XXX 替换为秒数,添加到 conf/neo4j-server.properties 文件中,然后通过 bin/neo4j restart 命令重新启动 neo4j。

或者,您可以通过 REST API 定期执行保持活动操作,如  /db/data/transaction/XXX 中所述,从而保持交易处于打开状态,或通过 /db/data/transaction/XXX/commit (其中 XXX 代表交易编号)尽早提交交易。

注意,bin/neo4j-shell 不使用 REST API,因此 org.neo4j.server.transaction.timeout 对在 neo4j-shell 中的 begin commit 内创建的交易没有影响。