我知道有很多类似的问题被问到了.但似乎答案无法解决我的问题.我有一个非常大的图表,大约1百万个节点和300万个关系.当我尝试使用以下语句删除它们时:
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
Run Code Online (Sandbox Code Playgroud)
然后服务器崩溃了.好的,我添加了LIMIT:
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
WITH n,r LIMIT 1000000
DELETE n,r
Run Code Online (Sandbox Code Playgroud)
服务器不会崩溃,但会出现异常:
org.neo4j.kernel.api.exceptions.TransactionFailureException: Node record Node[1578965,used=false,rel=662269,prop=-1,labels=Inline(0x0:[]),light] still has relationships
Run Code Online (Sandbox Code Playgroud)
我猜LIMIT 1000000会停止我对关系的删除.然后它转向删除节点.这导致了这个例外.我对吗?因为我不太了解LIMIT 1000000的过程.
所以我该怎么做?每次我需要清除图表时,我不想删除数据库文件.设置更大的内存空间可能会有所帮助,但我的图表的大小也可能会变大.崩溃最终会发生.
谢谢你的回复.我试过你的方法."Neo.DatabaseError.Statement.ExecutionFailure"异常将在我第二次运行语句时出现:
MATCH (n)
WITH n LIMIT 1000000
DETACH DELETE n
Run Code Online (Sandbox Code Playgroud)
或本声明:
MATCH ()-[r]-()
WITH r
LIMIT 1000000
DELETE r
Run Code Online (Sandbox Code Playgroud)
我放弃.我想我最好删除我文件夹中的所有文件.这对我来说很简单.
在Neo4j 2.3上你可以使用
MATCH (n)
WITH n LIMIT 1000000
DETACH DELETE n
Run Code Online (Sandbox Code Playgroud)
否则,您可以尝试通过节点进行限制(仅当每个单独节点没有大量关系时才有效):
MATCH (n)
WITH n LIMIT 1000000
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
921 次 |
最近记录: |