2011-09-15 174 views
3

我遇到了CouchDB 1.1.0的問題。我在筆記本電腦中創建了一個數據庫並將其複製到我的服務器。然後,我將附件添加到本地數據庫並將它們複製到遠程數據庫。CouchDB中的鬼附件

在第二次複製時,似乎出現錯誤。附件上傳正確,但我無法將它們附加到文檔上。

如果我檢查數據庫的大小,他們在這裏。但我無法得到它們,也無法刪除它們。 (清理數據庫不要刪除它們)。

當從遠程複製到另一個數據庫時,我仍然複製了「鬼附件」。

有沒有人有任何想法呢?我怎樣才能刪除這些附件?

回答

7

也許你有一個文件衝突

與軍事衝突或道德衝突不同,CouchDB conflict是正常且有用的,通常在複製後發生。 (衝突有點類似於Git,Mercurial或Bzr中的分支)。

在複製期間,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行,那麼這根本就不是問題,我們將不得不考慮你的問題。