为什么在 ClickHouse 中没有显式修改"Cannot modify setting in readonly mode"会抛出它?



当引发以下异常时,应用程序正在使用只读用户:

<Error> HTTPHandler: Code: 164, e.displayText() = DB::Exception: Cannot modify 'result_overflow_mode' setting in readonly mode

我阅读了ClickHouse的代码,发现当查询使用set setting时,如果用户是只读的,就会抛出这个错误。

我在users.xml中检查了我的只读用户的配置,发现max_result_rows/bytesresult_overflow_mode没有被主动设置。

但是,我的查询与set setting不一致。

那么,是什么逻辑触发了这种设置的改变呢?

尝试指定<readonly>2</readonly>

readonly参数说明:https://clickhouse.tech/docs/en/operations/settings/permissions_for_queries/#settings_readonly

可能的值:
0-允许所有查询
1--只允许读取数据查询
2-允许读取数据和更改设置查询。

因此,在readonly=2的情况下,允许客户端设置result_overflow_mode,但不允许执行插入和其他修改数据的请求。

最新更新