Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j错误:节点xxx已在此事务中删除_Neo4j_Cypher - Fatal编程技术网

Neo4j错误:节点xxx已在此事务中删除

Neo4j错误:节点xxx已在此事务中删除,neo4j,cypher,Neo4j,Cypher,似乎此密码会导致此错误:节点xxx已在此事务中被删除 MATCH (a:Address), (b:Address), (a)-[r:BelongTo]->(:Wallet), (b)-[:BelongTo]->(:Wallet) WHERE a.AddId=b.AddId AND ID(a) > ID(b) WITH r, a, b, a {.*, rel: r {.*, type:type(r)}} as snapshot DELETE r WITH a, b, snaps

似乎此密码会导致此错误:节点xxx已在此事务中被删除

MATCH (a:Address), (b:Address), (a)-[r:BelongTo]->(:Wallet), (b)-[:BelongTo]->(:Wallet)
WHERE a.AddId=b.AddId AND ID(a) > ID(b)

WITH r, a, b, a {.*, rel: r {.*, type:type(r)}} as snapshot
DELETE r
WITH a, b, snapshot     ------------------*
DELETE a                -------------------*
WITH b, snapshot

MERGE (c:Address {uniqueReferenceAddr:(...)})
ON CREATE SET c.AddId=snapshot.AddId,..."            
WITH c, b, snapshot
MATCH (wa:Wallet) WHERE snapshot.rel.primWallAddr=wa.primWallAddr
MERGE (c)-[r:BelongTo{uniqueReferenceBelongTo:(c.AddId + wa.primWallAddr)}]->(wa)
ON CREATE SET r.primWallAddr = wa.primWallAddr
WITH c, b 
MATCH (b)-[r0:BelongTo]->(wa:Wallet)
WITH wa, c, b, r0
MERGE (c)-[r1:BelongTo{uniqueReferenceBelongTo:(c.AddId + wa.primWallAddr)}]->(wa)
ON CREATE SET r1.primWallAddr = wa.primWallAddr
WITH b, r0
DELETE r0 
WITH b
DELETE b
删除标记为*的两行时,会引发此错误:无法删除节点xxx(与前面提到的错误中的id相同),因为仍有连接到它的关系。(沿着这条线的东西)

可能相关的数据:

(id:13557)
primWallAddr    1MEe2mebed8wopvy8xyjjHcEQHUPVJn2UC
multiExist  false
first_seen  2014-09-29T20:03:42
addr_tag_link   null
last_seen   2017-02-03T05:48:14
addr_tag    null
uniqueReferenceAddr 1ERfjthAH9T3PDtFcpkzudha89ABkD9RgSnullnull1MEe2mebed8wopvy8xyjjHcEQHUPVJn2UCfalse
AddId   1ERfjthAH9T3PDtFcpkzudha89ABkD9RgS


b: (id: 13563)
primWallAddr    1KumbRsTcA6UNqU2MHEfqEFnAZYU3w3izR
multiExist  false
first_seen  2014-09-29T20:03:42
addr_tag_link   null
last_seen   2017-02-03T05:48:14
addr_tag    null
uniqueReferenceAddr 1ERfjthAH9T3PDtFcpkzudha89ABkD9RgSnullnull1KumbRsTcA6UNqU2MHEfqEFnAZYU3w3izRfalse
AddId   1ERfjthAH9T3PDtFcpkzudha89ABkD9RgS

(id: 13564)
primWallAddr    1Lsqcv4cg5zUctNi2qwNxMkrv1GeBboSUJ
multiExist  false
first_seen  2014-09-29T20:03:42
addr_tag_link   null
last_seen   2017-02-03T05:48:14
addr_tag    null
uniqueReferenceAddr 1ERfjthAH9T3PDtFcpkzudha89ABkD9RgSnullnull1Lsqcv4cg5zUctNi2qwNxMkrv1GeBboSUJfalse
AddId   1ERfjthAH9T3PDtFcpkzudha89ABkD9RgS
此处显示的所有节点都是地址节点,它们都与一个(且仅一个)钱包节点有关系,该节点名为
:BelongTo

设置地址和钱包节点的约束:

CREATE CONSTRAINT ON (addr:Address) ASSERT addr.uniqueReferenceAddr IS UNIQUE

CREATE CONSTRAINT ON (wa:Wallet) ASSERT wa.primWallAddr IS UNIQUE
用于生成地址节点的密码:

LOAD CSV... as line
MERGE (a:Address {uniqueReferenceAddr:(...)})
ON CREATE SET a.AddId=line[0],...
用于生成钱包节点的密码:

LOAD CSV... as line
MERGE (w:Wallet { primWallAddr:line[0]})
ON CREATE SET w.first_seen = line[1]...
MATCH (addr:Address), (wa:Wallet) WHERE addr.primWallAddr=wa.primWallAddr
MERGE (addr)-[r:BelongTo{uniqueReferenceBelongTo:(...)}]->(wa)
ON CREATE SET ...
用于将地址节点链接到相应钱包节点的密码:

LOAD CSV... as line
MERGE (w:Wallet { primWallAddr:line[0]})
ON CREATE SET w.first_seen = line[1]...
MATCH (addr:Address), (wa:Wallet) WHERE addr.primWallAddr=wa.primWallAddr
MERGE (addr)-[r:BelongTo{uniqueReferenceBelongTo:(...)}]->(wa)
ON CREATE SET ...
第一个查询在运行这三个查询之后运行


有人知道原因是什么吗

你能展示示例数据吗?另外,如果您想删除节点及其关系,可以使用
DETACH delete a
@stdob--我知道
DETACH delete
,但我现在不想使用ito,因为我不确定查询的其他部分是否正常工作。比如说数据,因为涉及的数据量很大,所以会比较困难。如果你愿意,我可以给你全部代码。(这是一个运行密码的java程序。)如果您愿意,我还可以向您发送触发此错误的csv文件。(我的密码首先从csv文件加载数据。)我知道这一点。但正如我所说的,由于涉及大量数据,这很困难。我刚刚找到了一种获取相关数据的方法,这是三个节点的数据(其中两个是这里关注的节点,我不知道是哪两个)。你能用
cypher
显示一个数据示例来添加它们吗?