我们有一个Neo4J 2.1.3数据库,我们有一个唯一性约束,创建如下:

CREATE CONSTRAINT ON(segment:SEGMENT)ASSERT segment.segmentId IS UNIQUE

当我们从浏览器测试这个时,它可以很好地检测违规行为,例如:

CREATE(n:SEGMENT {name:“duplicate”,segmentId:110484})返回n

结果是

节点589已存在,标签为SEGMENT,属性为“segmentId”= [110484]

Neo.ClientError.Schema.ConstraintViolation

这很好 .

我们有一个负载测试仪设置,每个盒子有3台机器和多个线程,使用Cypher over REST与Neo4J交谈,并使用事务 endpoints 创建类似于上面的内容(当然还有更多与我们应用程序相关的属性),并始终写入HA设置中的Neo4J主站 .

我们可以在该设置中可靠地重现多次违反Neo4J未捕获的唯一性约束,它们无错误地执行,并且在生成的数据库中我们可以看到具有SEGMENT标签的多个节点以及segmentId属性的相同值(我们是故意的为我们的测试生成重复的segmentId值) .

其他人遇到同样的问题?这是一个Neo4J错误吗?

谢谢 .