2011-06-23 101 views
2

它看起來像Futon(CouchDB的基於Web的管理員可在http://:5984/_utils上獲得)以某種方式緩存關於存儲在CouchDB數據庫中的數據的信息。被褥沒有顯示記錄,CouchDB控制檯顯示所有記錄

我實際上並不知道如何以及爲什麼。

如果我用〜150 000條記錄填充現有數據庫(通過服務器上的PHP腳本),蒲團仍然顯示0條記錄。 如果我通過蒲團本身添加一些記錄,蒲團顯示它們,但仍不顯示所有記錄。

它看起來像被褥使用不同的存儲每個客戶端。 但創建&刪除&重命名數據庫本身顯示在雙方(Futon &控制檯)。

+2

你能確認你有**所有文件**啓用視圖,而不是如零行的map/reduce視圖? – JasonSmith

回答

2

這根本不是正常行爲。許多人每天都會使用蒲團,並期待良好的行爲。

如果你是一個網絡開發人員,你不認爲它只是瀏覽器緩存,那麼我建議你調查究竟是 PHP和瀏覽器查詢之間有什麼區別。你很可能會發現一個很大的線索。你可以先看看CouchDB日誌,並確認瀏覽器和控制檯都是查詢相同的數據庫。

接下來,我會使用tcpdump,wireshark或Charles代理來查看空中的位。如果可能,我喜歡在服務器上收集數據,以排除(不)透明代理。

恕我直言,你有1%的可能發現一個朦朧的蒲團bug和99%的可能發現查詢之間的差異。例如,使用不同的Host標題將導致應用不同的虛擬主機規則,這可以訪問完全不同的數據庫。

+0

我建議螢火蟲控制檯作爲一個非常方便的工具,同時使用蒲團。使用控制檯面板中的「Persist」選項可以查看完整日誌文件。 –

0

只需重新設置couchdb進程(couchdb -k; couchdb -b),當您再次打開Futon時,您將看到所有丟失的數據。

請注意,此修復程序的工作原因不是因爲您重置數據庫,而是因爲您重置了Futon(如果有一個命令只是爲了重置Futon,請讓我知道,我會測試)。很可能你的PHP腳本創建一個類似於Futon客戶端的實例,並且它們不會承認每個其他更改(我發現這至少是創建數據庫和添加文檔的情況)。

請注意,這個問題只發生在我將應用程序放入Web服務器時。在這種情況下,來自Futon的調用似乎來自公共地址,而來自我的應用程序的調用看起來來自127.0.0.1(在/etc/couchdb/local.ini中,我的bind_address = 0.0.0.0)。當我在本地開發時,我從來沒有遇到過這個問題。

0

在我的情況下,它是Nginx配置部分proxy_buffers爲什麼Futon不顯示任何數據。

我改變我的配置是這樣的:

proxy_buffers 4 1024k; 
proxy_buffer_size 1024k;