Проблема с созданием таблицы в ClickHouse через HTTP-запрос
Добрый день! Возникла проблема при работе с ClickHouse через HTTP-интерфейс. Запросы на чтение данных выполняются успешно, однако попытка создать таблицу завершается ошибкой, несмотря на подтверждённые права доступа.
Контекст проблемы
Права на создание таблицы были проверены и подтверждены как в песочнице, так и в основном аккаунте. Код для создания таблицы взят из официальной документации ClickHouse, с адаптацией метода запроса и заголовков авторизации.
Используемый PHP-код
Ниже представлен код, который вызывает ошибку:
$query_create_table = "CREATE TABLE `iiko-db`.test_sales (Delivery_IsDelivery String) ENGINE = MergeTree() ORDER BY (Delivery_IsDelivery);";
$host = '******.mdb.yandexcloud.net';
$db = '****';
$auth = [
'X-ClickHouse-User:******',
'X-ClickHouse-Key:******',
'Transfer-Encoding: chuncked',
'Content-Length:' . strlen($query_create_table),
];
$ssl = [
'cafile' => '/usr/local/share/ca-certificates/Yandex/RootCA.crt',
'verify_peer' => true,
];
$context = stream_context_create([
'http' => [
'method' => 'POST',
'protocol_version' => 1.1,
'header' => $auth
],
'ssl' => $ssl
]);
$url = sprintf('https://%s:8443/?database=%s&query=%s', $host, $db, urlencode($query_create_table));
$rs = file_get_contents($url, false, $context);
echo "<pre>";
print_r($rs);
echo "</pre>";Получаемая ошибка
При выполнении скрипта возникает следующее предупреждение:
Warning: file_get_contents(https:/*****.mdb.yandexcloud.net:8443/?database=iiko-db&query=CREATE+TABLE+%60iiko-db%60.test_sales+%28Delivery_IsDelivery+String%29+ENGINE+%3D+MergeTree%28%29+ORDER+BY+%28Delivery_IsDelivery%29%3B): Failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /index.php on line 119Сервер возвращает статус 400 Bad Request, что указывает на некорректный синтаксис запроса или проблему с его формированием.