ArangoDB 3.2 唯一约束违规 _id 或 _key

ArangoDB 3.2 unique constraint violation _id or _key

我刚刚从 arangoDB 阅读了这个问题 github [1.1] 功能请求:在唯一约束违规异常中包括涉及的 ID 或键 #342 (https://github.com/arangodb/arangodb/issues/342) 因为这正是我要找的。 显然这个问题已经关闭,因为它已经在 ArangoDB 3.2 中实现,但是我没有找到从唯一约束违规错误中检索 id 或键的方法。

例如,我在 "projectName" 属性上具有散列索引的集合上调用以下 AQL 查询。

# first insert - everything OK
INSERT {"projectName":"test","startDate":"now"} IN projects
RETURN NEW

# second insert - will give unique constraint violation error
INSERT {"projectName":"test","startDate":"tomorrow"} IN projects
RETURN NEW

因此我得到的错误是:AQL: unique constraint violated (while executing). Errors: {u'code': 409, u'errorNum': 1210, u'errorMessage': u'AQL: unique constraint violated (while executing)', u'error': True} 没有 _key 或 _id 或告诉我哪个文档违反了唯一约束的东西。根据已关闭的问题,它应该是可能的,但我不知道如何,或者我只是理解错了。

注意:Determining which unique constraint caused INSERT failure in ArangoDB 中发布了类似的问题,但我认为它在 ArangoDB 3.2 发布之前得到了回答

我正在使用 ArangoDB 3.2.3

谢谢

从 AQL 中触发唯一约束冲突时,似乎仍忽略了索引详细信息。在这种情况下,它只会 show/return 一个通用的 "unique constraint violated",但不会指明是哪个索引引起的。

这是无意的,现在有一个 pull request 来解决这个问题:

https://github.com/arangodb/arangodb/pull/3330