簡體   English   中英

CouchDB 視圖可訪問,但不會運行查詢

[英]CouchDB view is accessible, but won't run query

我使用 couchdb 的 PHP 庫添加了一個視圖:

public function addView() {
    $design_doc = new stdClass();
    $design_doc->_id = '_design/need';
    $design_doc->language = 'javascript';
    $design_doc->views = array( 'all' => array('map' => "function(doc) { if (doc.type == 'need')  emit(doc.type, doc) }" ) );
    $result = $this->client->storeDoc($design_doc);
    return $result;
}

在我的 shell 中,我查看了它的文檔以確認它已創建:

curl -X GET mysite.com/bids/_design/need
{
  "_id":"_design/need",
  "_rev":"1-0ed4b41b839ade9ca36fb950cac1c39b",
  "language":"javascript",
  "views":
    {
      "all":
        {
          "map":"function(doc) { if (doc.type == 'need')  emit(doc.type, doc) }"
        }
    }
}

然后當嘗試實際執行視圖時,它會拋出 eacces 錯誤:

curl -X GET mysite.com/bids/_design/need/_view/all
{
  "error":"error","reason":"eacces"
}

權限:實例以 root 身份運行。

我是否使用了錯誤的語法來執行視圖查詢?

會不會是PHP傳過來的字符串編碼有問題?

“eacces”表明這是您的數據庫存儲目錄的權限或所有權問題。

對於每個數據庫,數據庫服務器將創建一個名為.<db_name>_design的子目錄,其中包含該數據庫中每個設計文檔的文件。 您的 CouchDB 實例正在運行的用戶很可能沒有創建該目錄或其中的文件的權限。

檢查數據庫所在的目錄及其下的所有內容是否由運行 CouchDB 的用戶所有,並且目錄和文件是否具有合理的權限。 如果您從源代碼安裝,它是 /usr/local/var/lib/couchdb,但如果您使用 package,它可能會有所不同。

php 的字符編碼存在一些問題。在 curl 中運行完全相同的查詢成功,然后視圖能夠正常運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM