name String,
value String
),
Я попробовал сделать name типа LowCardinality:
ALTER TABLE t MODIFY COLUMN params.name LowCardinality(String);
И получил такую ошибку:
DB::Exception: Exception happened during execution of mutation '0000000000' with part '200001_1_1_9' reason: 'Code: 49. DB::Exception: Got empty stream for SerializationLowCardinality keys.: (while reading column params.name): (while reading from part \/opt2\/clickhouse\/cluster002.shard007.replica010\/data\/database\/tablename\/200001_1_1_9\/ from mark 0 with max_rows_to_read = 2173): While executing MergeTreeInOrder. (LOGICAL_ERROR) (version 22.3.11.12 (official build))'. This error maybe retryable or not. In case of unretryable error, mutation can be killed with KILL MUTATION query. (UNFINISHED) (version 22.3.11.12 (official build))
Я что-то сделал не правильно или так вообще нельзя делать?
внутри Nested у вас каждая колонка это массив на самом деле https://clickhouse.com/docs/en/sql-reference/data-types/nested-data-structures/nested так то правильнее ALTER TABLE t MODIFY COLUMN params.name Array(LowCardinality(String)); мутацию предыдущую через KILL MUTATION лучше убить
https://github.com/ClickHouse/ClickHouse/issues/42161 вам надо optimize-м пройтись по затронутым партициям
@BloodJazMan выше подсказал, что я не правильно сделал alter, не хватало Array в типе колонки: ALTER TABLE t MODIFY COLUMN params.name Array(LowCardinality(String)); Попробовал - и все заработало
Обсуждают сегодня