【发布时间】:2014-12-11 15:36:06
【问题描述】:
我有一个 neo4j 数据库,其中包含一组带有标签的节点:EXAMPLE。
有两种操作。首先我删除一个节点,然后寻找另一个节点。它们是使用 neo4j API 单独完成的。
MATCH (n:EXAMPLE {Name: { name1 }}) DELETE n;
和
MATCH (n:EXAMPLE {Name: { name2 }}) RETURN n;
有时,当我执行第二个查询时,它会抛出一个错误“Node with id 123”。 ID 为 123 的节点是与在第一个查询中删除的相同节点。
当有大量请求同时进入数据库时会发生这种情况。
我猜如果节点被删除,但示例标签索引尚未更新,可能会发生这种情况。有两个事实证明了这种理论。
1) 错误不稳定。
2)如果我像这样更改第二个查询(删除标签),我不会收到错误:
MATCH (n {Name: { name2 }}) RETURN n;
Neo4j 版本为 2.1.5,Java - OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-2~deb7u1),操作系统为 Debian。数据库中除标签外没有其他索引。
问题是如何解决这个问题,但仍然使用标签?
【问题讨论】: