当前不支持在 snapshot 期间添加列。建议的变通方法是在计划中的 schema 变更之前或之后执行 snapshot;或者,如果 ClickPipe 已经失败,可手动向目标端表添加一个类型合适的列。
新增列的默认值
NULL、比特字面量、CURRENT_TIMESTAMP、NOW() 或 UUID() 等函数调用,以及包含反斜杠或控制字符的字符串值。该列仍会被添加,但对于早于该列的数据分区片段,ClickHouse 会使用相应类型的常规默认值。如果这些现有行必须包含源端默认值,则需要完整刷新表。
ClickPipes 仅在执行 ALTER TABLE ADD COLUMN 时传播默认值。后续更改或移除列默认值的操作不会传播到 ClickHouse。
MySQL 5.x 限制
binlog_row_metadata=FULL) ,因此 ClickPipes 会按列的序号跟踪列。这意味着:
- 在末尾添加列 (
ALTER TABLE ADD COLUMN ...) 受支持。 - 任何会导致列位置移位的 DDL 都会导致管道报错,因为届时将无法再可靠地按序号进行映射。这包括:
ALTER TABLE DROP COLUMN ...ALTER TABLE ADD COLUMN ... AFTER .../FIRSTALTER TABLE MODIFY COLUMN ... AFTER .../FIRSTALTER TABLE CHANGE COLUMN ... AFTER .../FIRST