couchDB恢复错误:缺少'docs'的JSON列表

时间:2014-03-23 08:26:32

标签: json couchdb

将数据库从一个主机复制到另一个主机时,我收到以下错误消息: 缺少' docs'

的JSON列表

以下是我的工作:

source> curl -X GET http://127.0.0.1:5984/cozy/_all_docs?include_docs=true > cozy.dump

destination> curl -X PUT http://127.0.0.1:5984/cozy 
{"ok":true}

destination> curl -d @cozy.dump -H "Content-type: application/json" -X POST http://localhost:5984/cozy/_bulk_docs 
{"error":"bad_request","reason":"Missing JSON list of 'docs'"}

任何想法?

谢谢!

2 个答案:

答案 0 :(得分:7)

这确实是版本的问题。

幸运的是,它很容易修复:只需更改转储中的第一行,例如。

{"total_rows": 8244, "offset": 0, "rows": [

{"docs": [

转储现在可以在更高版本中使用。

答案 1 :(得分:3)

我知道这是一个老问题,但我仍然会发布一个答案,以防其他人正在寻找解决方案。批量文档api以特定形式接受请求。

{docs:[{},{},{}]}

docs键必须包含要批量插入的文档数组。操作

的操作

curl -X GET http://127.0.0.1:5984/cozy/_all_docs?include_docs=true > cozy.dump

是他只是存储了格式

的couchdb响应
{
 total_rows: 4,
 offset: 0,
 rows: [....]
}

进入cozy.dump文件。正如我们在上面看到的,这个文件的形式不是批量文档api可以使用的。因此错误

{"error":"bad_request","reason":"Missing JSON list of 'docs'"}

Couchdb需要docs的JSON列表来执行批量插入。

此处需要注意的另一点是,如果您提供_id_rev参数,则couchdb会执行批量更新而不是批量插入。如果您只想将一个数据库复制到另一个数据库,请使用http://wiki.apache.org/couchdb/Replication