php cloudant curl 抱怨数据库已经存在

php cloudant curl complains db already exists

我有一个 curl 请求到 cloudant 数据库以添加新文档。但是,每当我 运行 它时,它都会抱怨数据库已经存在,然后我必须重命名 url 中的数据库。然而,这只会创建一个新的空数据库。我的 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;

是的,我正在使用 code igniter 和 hmvc 模式,但这些都不是重要的细节,因为我正在收到回复。

回复:

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

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

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

如果您直接向数据库发送 PUT 或 POST 请求,就像我想的那样,您是在要求 couchDB 创建该数据库。