| Schema 变更类型 | 行为 |
|---|---|
添加新列 (ALTER TABLE ADD COLUMN ...) | 自动传播。schema 变更后复制的所有行都会包含新列 |
添加带默认值的新列 (ALTER TABLE ADD COLUMN ... DEFAULT ...) | 自动传播。schema 变更后复制的所有行都会包含新列,但现有行只有在执行完整的表 refresh 后才会显示默认值 |
删除现有列 (ALTER TABLE DROP COLUMN ...) | 可以检测到,但不会传播。对于 schema 变更后复制的所有行,被删除的列将填充为 NULL |
当前不支持在 snapshot 期间添加列。建议的变通方法是在计划中的 schema 变更之前或之后执行 snapshot;或者,如果 ClickPipe 已经失败,可手动向目标端表添加一个类型合适的列。
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