Node(nodeOffset: 0) has more than one neighbour in table HAS in the fwd directio...
🚨 错误信息
MATCH (a:Person {face_id: '1'}) CREATE (a)-[:HAS]->(:Preference {name: '饮食偏好'});
MATCH (a:Person {face_id: '1'}) CREATE (a)-[:HAS]->(:Preference {name: '音乐偏好'});
Failed: Runtime exception: Node(nodeOffset: 0) has more than one neighbour in table HAS in the fwd direction, which violates the rel multiplicity constraint.
🤖 AI解决方案
Failed: Runtime exception: Node(nodeOffset: 0) has more than one neighbour in table HAS in the fwd direction, which violates the rel constraint.
失败:运行时异常:节点(nodeOffset: 0)在HAS表中具有多个前向邻居,这违反了关系多重性约束。
原因分析:
Neo4j 的 HAS 关系被设置了多重性约束(multiplicity constraint),允许每个节点在关系的前向(fwd)方向上最多只有一个邻居。当前尝试向 Person 节点添加第二个 HAS 关系,违反了这个约束。
解决方案:
需要修改关系的多重性约束。假设 HAS 关系的前向方向应该允许多个邻居,可以移除或修改约束。
- 移除约束(如果允许):
DROP RELATIONSHIP PROPERTY HAS.fwd;
然后重新执行您的创建语句:
MATCH (a:Person {face_id: '1'}) CREATE (a)-[:HAS]->(:Preference {name: '饮食偏好'});
MATCH (a:Person {face_id: '1'}) CREATE (a)-[:HAS]->(:Preference {name: '音乐偏好'});
如果
HAS 关系的前向方向应该允许多个邻居(例如,oneOrMore 或 zeroOrMore),则需要使用 ALTER 命令修改图数据库模式(Schema)。具体语法取决于您使用的 Neo4j 版本和管理方式。通常,这可能涉及: // 示例:假设您需要 'zeroOrMore',并且之前的约束是 'exactlyOne'
// 注意:具体的 ALTER 语法可能需要查阅 Neo4j 文档,这里仅为示意
ALTER CONSTRAINT ON (p:Person) ALTER RELATIONSHIP HAS.fwd SET multiplicity = 'zeroOrMore';
执行完约束修改后,再执行您的创建语句。
预防措施: