Curl 由于更新冲突,无法删除文档
这是我获取文档并检查更新版本的方式:Curl 由于更新冲突,无法删除文档,curl,couchdb,http-delete,Curl,Couchdb,Http Delete,这是我获取文档并检查更新版本的方式: curl http://localhost/cdb/characters/e6b153975174556adc0b344e9a000a7f?revs=true returns: {"_id":"e6b153975174556adc0b344e9a000a7f","_rev":"1-25b25539eca3944ef8d8f20748ed4902","name":"Barack Obama","position":"US President"} 然后我尝
curl http://localhost/cdb/characters/e6b153975174556adc0b344e9a000a7f?revs=true
returns:
{"_id":"e6b153975174556adc0b344e9a000a7f","_rev":"1-25b25539eca3944ef8d8f20748ed4902","name":"Barack Obama","position":"US President"}
然后我尝试删除该文档,如下所示:
curl -X DELETE http://localhost/cdb/characters/e6b153975174556adc0b344e9a000a7f?rev=1-25b25539eca3944ef8d8f20748ed4902
response:
{"error":"conflict","reason":"Document update conflict."}
为什么,如果修订似乎没有问题,那么删除时是否存在文档冲突
删除没有其他修订的文档是否有问题?首先,由于您的代码看起来是正确的,请检查您的参数是否确实已发送 否则,应检查修订是否标记为已删除:
curl -X GET http://127.0.0.1:5984/kina/ \
04ce1239166b841ae8a317897ec45b11?revs_info=true
{
"_id":"04ce1239166b841ae8a317897ec45b11",
"_rev":"3-bc27b6930ca514527d8954c7c43e6a09",
"_revs_info":
[
{
"rev":"3-bc27b6930ca514527d8954c7c43e6a09",
"status":"available"
},
{
"rev":"2-eec205a9d413992850a6e32678485900",
"status":"deleted"
},
{
"rev":"1-967a00dff5e02add41819138abb3284d",
"status":"available"
}
]
}
要清除已删除的版本,必须使用_purge。例如:
curl -X POST http://127.0.0.1:5984/kina/_purge/ \
-H "content-type:application/json" \
-d ’{"7341477ce373f9cc76f351e598001cdd":
["2-5c7fb5dfeaf6f7cea149922fa1cdaf96"]
}’
{
"purge_seq":1,"purged":
{
"7341477ce373f9cc76f351e598001cdd":
["2-5c7fb5dfeaf6f7cea149922fa1cdaf96"]
}
}
已完成删除具有其他修订的文档:
curl-X DELETEhttp://couchhost:5984/couchdb/docid\?版次\=版次编号
这有助于我获得{“error”:“conflict”,“reason”:“Document update conflict.”
这不是一个直接的答案,但是,对于像我这样的一些人来说,编码太晚了,他们认为查询参数的名称是\u rev
而不是rev
,只需删除下划线即可
(实际上,我必须启用couchdb调试日志记录,以比较couchdb从fauxton和我的应用程序发送时收到的http请求)不,couchdb在删除文档时不会遇到问题,就像您的情况一样,只有一个修订版。只有在有更新版本的情况下,才会发生这种情况。您正在使用哪个CouchDB版本?您的http请求似乎是正确的。奇怪的是,我发送请求的代理没有将参数附加到字符串的末尾:/啊-所以这是一个与沙发无关的问题,你做的每件事都是正确的;-)对不起,浪费了你的时间/_群集CouchDb v2.0.0中不再支持清除:(