首页 > 解决方案 > ClickHouse 创建临时表

问题描述

当我尝试在 ClickHouse 中创建临时表时遇到问题。我执行简单查询并收到错误

create TEMPORARY TABLE nn1 as select 1;

message: Code: 113, e.displayText() = DB::Exception: There is no session, e.what() = DB::Exception

有人知道它为什么会发生以及如何解决这个问题吗?我想在进行查询之前我需要开始会话,但我不知道该怎么做。

我正在尝试使用 ClickHouse 的界面进行查询。看起来像

在此处输入图像描述

标签: clickhouse

解决方案


默认情况下,通过 HTTP 接口完成的所有查询都是无状态的。

要使用临时表,您需要有一个活动会话。session_id在 ClickHouse 请求的 URL 中添加一些值的参数就足够了。

例如:
替换http://127.0.0.1:8123/
http://127.0.0.1:8123/?session_id=mysession

稍后使用相同的请求session_id将“记住”您在之前的查询中使用session_id.

另请记住,会话使用排他锁,因此您不能同时运行具有相同 session_id 的 2 个请求。默认情况下会话生命周期等于 60 秒,但可以调整。

查看官方文档https://clickhouse.yandex/docs/en/interfaces/http/


推荐阅读