php cloudant curl抱怨db已经存在

时间:2015-09-21 11:16:20

标签: php codeigniter couchdb cloudant

我向cloudant数据库发送curl请求以添加新文档。但是,每当我运行它时,它都会抱怨数据库已经存在,然后我必须在url中重命名db。但是,这只会创建一个新的空数据库。我的curl请求有什么问题?

这是我使用的代码:

credentials = base64_encode($login.':'.$password);
    $curl = curl_init();

    curl_setopt_array($curl, array(
      CURLOPT_URL => $url,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => "PUT",
      CURLOPT_POSTFIELDS => $data,
      CURLOPT_HTTPHEADER => array(
        'Authorization: Basic '.$credentials,
        "content-type: application/json"
      ),
    ));

    $response = curl_exec($curl);
    $err = curl_error($curl);

    curl_close($curl);

    if ($err) {
        if($this->debug === 1) {
            echo $err;
            var_dump($info);
        }
      return false;
    } else {
      return $response;
    }

这是使用它的代码:

$journey_data = array(
            "name" => "name",
            "TEST" => "TESTIN TED"
            );

$this->cloudent_controller = modules::load('cloudent_integration/cloudent_integration');
        $url = "https://test.cloudant.com/fubar";
        $result = $this->cloudent_controller->createDocument($url, json_encode($journey_data));
        var_dump($result);
        die;

是的我正在使用代码点火器和hmvc模式,但这些并不重要,因为我正在回复。

回应:

string(95) "{"error":"file_exists","reason":"The database could not be created, the file already exists."} "

1 个答案:

答案 0 :(得分:1)

要在couchDB服务器中创建新文档,您需要将PUT或POST请求发送到您希望保存文档的URL,这意味着您需要在URL中指定数据库和文档名称:

https://test.cloudant.com/fubar/doc_id

如果您将PUT或POST请求直接发送到数据库,就像我认为的那样,您要求couchDB创建该数据库。