Node(nodeOffset: 0) has more than one neighbour in table HAS in the bwd directio...
🚨 错误信息
Statement[83]: MATCH (a:Person {face_id: '2'}), (b:Preference {name: '饮食偏好'}) CREATE (a)-[:HAS]->(b);
Failed: Runtime exception: Node(nodeOffset: 0) has more than one neighbour in table HAS in the bwd direction, which violates the rel multiplicity constraint.
🤖 AI解决方案
text
Statement[83]: MATCH (a:Person {face_id: '2'}), (b:Preference {name: '饮食偏好'}) CREATE (a)-[:HAS]->(b);
Failed: Runtime exception: Node(nodeOffset: 0) has more than one neighbour in table HAS in the bwd direction, which violates the rel multiplicity constraint.翻译:
Statement[83]: 匹配 (a:Person {face_id: '2'}), (b:Preference {name: '饮食偏好'}) 创建 (a)-[:HAS]->(b);
失败:运行时异常:节点(nodeOffset: 0)在 HAS 表的后向方向(bwd direction)有多个邻居,这违反了关系多重性约束。
原因分析
创建的 :HAS 关系违反了其定义的多重性约束,即一个 Person 节点在 :HAS 关系(后向)最多只能有一个 Preference 节点。当前操作尝试为已经存在 :HAS 关系的 Person 节点添加另一个 :HAS 关系。
解决方案
在创建新的 :HAS 关系之前,检查目标 Person 节点是否已经存在此类型的关系。如果存在,则不执行创建操作,或根据业务逻辑决定是否更新现有关系。
示例代码 (Cypher):
cypher
MATCH (a:Person {face_id: '2'}), (b:Preference {name: '饮食偏好'})
WHERE NOT EXISTS((a)-[:HAS]->(b))
CREATE (a)-[:HAS]->(b);
或者,如果允许更新关系属性,可以先匹配现有关系并进行更新,但这取决于你的具体业务需求。