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 来解决这个问题:
我刚刚从 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 来解决这个问题: