Cloudant/couchdb文档可以';由于409冲突,无法删除

Cloudant/couchdb文档可以';由于409冲突,无法删除,couchdb,cloudant,ibm-cloud,Couchdb,Cloudant,Ibm Cloud,我有一个在IBMBlueMix中运行的Java应用程序,它使用Cloudant(couchdb)数据库作为服务。我在数据库中有一个无法删除的文档,因为Cloudant在我尝试时返回一个409冲突错误。但是,当我查询冲突时,它不会报告任何: $ curl 'https://<user>-bluemix:<pass>@<host>-bluemix.cloudant.com/<dbname>/e4eca7af-cb27-4b1e-b738-31abcf8

我有一个在IBMBlueMix中运行的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'https://-bluemix:@-bluemix.cloudant.com//e4eca7af-cb27-4b1e-b738-31abcf880680?冲突=true'
{
“_id”:“e4eca7af-cb27-4b1e-b738-31abcf880680”,
“修订版”:“13887-a24ecaf2f6e628903e294b11e73d8ca8”,
…[其他内容,但无冲突部分]
}
当我试图删除它时:

$ 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."}
$curl-i-X DELETE'https://-bluemix:@-bluemix.cloudant.com//e4eca7af-cb27-4b1e-b738-31abcf880680?_rev=13887-a24ecaf2f6e628903e294b11e73d8ca8'
HTTP/1.1409冲突
X-COACH-Request-ID:02286a98ac
服务器:CouchDB/1.0.2(Erlang OTP/R14B)
日期:2015年4月15日星期三12:35:00 GMT
内容类型:文本/纯文本;字符集=utf-8
内容长度:58
缓存控制:必须重新验证
严格的运输安全:最大年龄=31536000
X-Content-Type-Options:nosniff;
{“错误”:“冲突”,“原因”:“文档更新冲突”。}
这是一份被删除并多次重新创建的文档(这就是_revcount变得如此之高的原因)。正常情况下,它工作正常,但偶尔会进入这种冲突状态。我发现我可以通过Cloudant web界面删除它,但似乎不能通过REST界面删除。但一旦我删除它,它会正常工作一段时间,然后问题又回来了

那么,为什么当我尝试删除时,它会说存在冲突,但它不会告诉我与'conflications=true'参数的冲突是什么?我还尝试了“\u deleted\u conflicts=true”,这也没有显示任何结果


它是如何进入这种状态的,我怎样才能防止它在将来发生?

与我们的cloudant支持人员交谈,实际上它不是
你需要说
?rev=
,而不是
?\u rev=
,才能正确地通过修订


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


在我们的cloudant人员中循环……谢谢,这太尴尬了。:-)然而,这个问题只存在于我在curl中的手动测试中——实际的代码总是正确地使用'rev'而不是'u rev'。因此,仍然存在某种间歇性问题,文档最初没有被删除。我接受这个答案,因为它解决了我眼前的问题,我会看看问题是否会再次出现。值得一提的是,您还可以使用
if Match
HTTP头。因为这是一个标准的标题,所以拼写错误的可能性较小。