【问题标题】:Cloudant/couchdb document can't be deleted due to 409 conflict由于 409 冲突,无法删除 Cloudant/couchdb 文档
【发布时间】:2015-04-15 12:48:27
【问题描述】:

我有一个在 IBM Bluemix 中运行的 Java 应用程序,它使用 Cloudant (couchdb) 数据库作为服务。我在该数据库中有一个无法删除的文档,因为 Cloudant 在我尝试时返回 409 冲突错误。但是,当我查询它是否存在冲突时,它不会报告任何冲突:

$ curl 'https://<user>-bluemix:<pass>@<host>-bluemix.cloudant.com/<dbname>/e4eca7af-cb27-4b1e-b738-31abcf880680?conflicts=true' 
{
"_id": "e4eca7af-cb27-4b1e-b738-31abcf880680", 
"_rev": "13887-a24ecaf2f6e628903e294b11e73d8ca8", 
...[other stuff but no _conflicts section]
}

当我尝试删除它时:

$ curl -i -X DELETE 'https://<user>-bluemix:<pass>@<host>-bluemix.cloudant.com/<dbname>/e4eca7af-cb27-4b1e-b738-31abcf880680?_rev=13887-a24ecaf2f6e628903e294b11e73d8ca8'
HTTP/1.1 409 Conflict
X-Couch-Request-ID: 02286a98ac
Server: CouchDB/1.0.2 (Erlang OTP/R14B)
Date: Wed, 15 Apr 2015 12:35:00 GMT
Content-Type: text/plain;charset=utf-8
Content-Length: 58
Cache-Control: must-revalidate
Strict-Transport-Security: max-age=31536000
X-Content-Type-Options: nosniff;

{"error":"conflict","reason":"Document update conflict."}

这是一个已被多次删除和重新创建的文档(这就是 _rev 计数如此之高的原因)。通常它工作正常,但时不时地进入这种冲突状态。我发现我可以通过 Cloudant Web 界面删除它,但似乎不能通过 REST 界面。但是一旦我删除它,它可以正常工作一段时间,然后问题又回来了。

那么为什么当我尝试删除时它说存在冲突,但它不会告诉我与“conflicts=true”参数的冲突是什么?我也试过 '_deleted_conflicts=true' 也没有显示。

它是如何进入这种状态的,我该如何防止它在未来发生?

【问题讨论】:

  • 在我们的云计算人员中循环......

标签: couchdb cloudant ibm-cloud


【解决方案1】:

您需要说?rev=,而不是?_rev= 才能正确通过修订。

http://docs.couchdb.org/en/1.6.1/api/document/common.html#delete--db-docid

【讨论】:

  • 谢谢,太尴尬了。 :-) 然而,这个问题只出在我在 curl 中的手动测试上——实际代码总是正确地使用“rev”而不是“_rev”。因此,仍然存在某种间歇性问题,即文档最初没有被删除。我接受这个答案,因为它解决了我的直接问题,我会看看问题是否会再次出现。
  • 值得一提的是,您还可以使用If-Match HTTP 标头。由于这是标准标题,因此拼写错误的可能性较小。
【解决方案2】:

当您在 Cloudant 中删除文档时,您必须提供修订标记作为“rev”参数。您正在传递一个“_rev”参数。您看到的错误就好像您根本没有通过修订。

https://docs.cloudant.com/api.html#delete36

【讨论】:

    【解决方案3】:

    与我们的 cloudant 支持人员交谈,实际上是 rev= 而不是 _rev=

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多