由于更新冲突而无法删除文档

问题描述 投票:7回答:3

这是我获取文档并检查较新版本的方式:

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 couchdb http-delete
3个回答
5
投票

首先,由于您的代码看起来正确无误,请检查是否确实发送了参数。

否则,您应检查修订是否标记为已删除:

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"]
  }
}

11
投票

删除具有其他修订版本的文档已完成:curl -X DELETE http://couchhost:5984/couchdb/docid\?rev\=rev_number

这对我有所帮助{"error":"conflict","reason":"Document update conflict."}


0
投票

这不是直接答案,但是,对于像我这样编码太晚并且认为查询参数名为_rev而不是rev的某些人,只需删除下划线即可。

((实际上我必须尽最大努力启用ouchdb调试日志记录,以便比较从fauxton与我的应用程序发送时,ouchdb收到的http请求)

© www.soinside.com 2019 - 2024. All rights reserved.