我遇到CouchDB 1.1.0的问题。我在笔记本电脑中创建了一个数据库并将其复制到我的服务器上。然后,我将附件添加到本地数据库并将它们复制到远程数据库。
在第二次复制时,似乎出现了错误。附件已正确上传,但我无法将其附加到文档上。
如果我检查数据库大小,它们就在这里。但我无法得到它们,也无法删除它们。 (清理数据库不会删除它们。)
当从远程数据库复制到另一个数据库时,我仍然复制了“幽灵附件”。
有人对此有任何想法吗?我怎么能删除这些附件?
答案 0 :(得分:7)
也许你有一个文件冲突。
与军事冲突或道德冲突不同,CouchDB conflict是正常且有用的,通常在复制后发生。 (冲突有点类似于Git,Mercurial或Bzr中的 branches 。)
在复制期间,CouchDB有时会收到同一文档的替代版本。在这种情况下,CouchDB会将两个版本替换为另一个版本。不幸的是,当您查询CouchDB以获取该文档时,它必须决定发送哪个文档;基本上它只选择一个修订并发送。使用正常的GET /db/doc_id
查询,您甚至不会意识到“冲突”(替代)修订版本隐藏在数据库的某个地方。
上面的链接显示了如何查找和解决冲突(当您删除不需要的修订时,剩余的修订版将可见。)关键的示例是查找冲突的视图:
function(doc) {
// Map function in a CouchDB view to find conflicts.
if(doc._conflicts) {
emit(doc._conflicts, null);
}
}
如果您查询该视图,我认为您会看到一些冲突。如果视图返回0行,那么这根本就不是问题,我们必须继续考虑你的问题。
答案 1 :(得分:0)
是的,我有冲突。谢谢Jason
如果有人需要有关冲突的更多信息,请
http://guide.couchdb.org/draft/conflicts.html
我刚刚创建了一个小的Node脚本,通过视图获取所有冲突并删除它们。