为什么在 ClickHouse 中没有显式修改它时会抛出 "Cannot modify setting in readonly mode"?
Why is "Cannot modify setting in readonly mode" thrown when not explicitly modify it in ClickHouse?
当抛出以下异常时,应用程序正在使用只读用户:
<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/bytes
和 result_overflow_mode
没有主动设置。
但是,我的查询不符合 set setting
。
那么是什么逻辑触发了此设置的更改?
尝试指定 <readonly>2</readonly>
。
readonly
参数说明:https://clickhouse.tech/docs/en/operations/settings/permissions_for_queries/#settings_readonly
Possible values:
0 — All queries are allowed.
1 — Only read data queries are allowed.
2 — Read data and change settings queries are allowed.
因此,使用 readonly=2 你可以让你的客户端设置 result_overflow_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/bytes
和 result_overflow_mode
没有主动设置。
但是,我的查询不符合 set setting
。
那么是什么逻辑触发了此设置的更改?
尝试指定 <readonly>2</readonly>
。
readonly
参数说明:https://clickhouse.tech/docs/en/operations/settings/permissions_for_queries/#settings_readonly
Possible values:
0 — All queries are allowed.
1 — Only read data queries are allowed.
2 — Read data and change settings queries are allowed.
因此,使用 readonly=2 你可以让你的客户端设置 result_overflow_mode
但不要执行插入和其他修改数据的请求。