当我尝试从我的Neo4j图形数据库中删除所有节点时,我已经在较小的数据集上成功完成了多次,我在运行此查询后始终遇到Error: undefined - undefined
MATCH (n) DETACH
DELETE n
我认为我一次尝试删除的节点数量可能太大(> 100000),所以我尝试了这个查询
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
WITH n,r LIMIT 10000
DELETE n,r
以及它的许多变体,主要代表我在这篇文章中读到的内容:Best way to delete all nodes and relationships in Cypher。全部都返回了此错误
org.neo4j.kernel.api.exceptions.ConstraintViolationTransactionFailureException: Cannot delete node<32769>, because it still has relationships. To delete this node, you must first delete its relationships.
并且每次,节点Neo4j都无法删除不同。有没有办法解决这个问题?
也许值得注意的是,当我运行此查询时,拼命运行上一个查询的变体
MATCH ()-[r]-()
OPTIONAL MATCH (n)-[r]-()
WITH r,n LIMIT 10000
DELETE r,n
我得到了这个相当独特的错误
Java heap space
,在横幅中显示为Neo.DatabaseError.General.UnknownError
。
答案 0 :(得分:1)
编写查询的方式之一是每个DELETE
一次只尝试删除单个节点/关系对。如果任何节点具有多个关系,您将获得该约束违规错误,因为为了删除节点,您必须删除其所有关系(事先或同时)。
要删除10000个节点(及其所有关系),请使用以下查询:
MATCH (n)
WITH n LIMIT 10000
DETACH DELETE n;