Почему «Не удается изменить настройки в режиме только для чтения» выбрасывается, если явно не изменить его в ClickHouse? - PullRequest
0 голосов
/ 17 марта 2020

Приложения использовали пользователя только для чтения, когда было выдано следующее исключение:

<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 не были активно установлены.

Однако мой запрос не go с set setting.

Так что лог c вызывает изменение этого параметра?

1 Ответ

0 голосов
/ 27 апреля 2020

Попробуйте указать <readonly>2</readonly>.

Описание параметра readonly: https://clickhouse.tech/docs/en/operations/settings/permissions_for_queries/#settings_readonly

Возможные значения:
0 - Все разрешены запросы.
1 - разрешены только запросы на чтение данных.
2 - разрешены запросы на чтение данных и изменение настроек.

Итак, с readonly = 2 вам разрешено клиент должен установить result_overflow_mode, но не позволяет выполнять вставки и другие запросы на изменение данных.

...