跳转到主要内容
MySQL 的 ClickPipes 可以检测源表中的 schema 变更,并且在某些情况下会自动将这些变更传播到目标端表。下文说明了各类 DDL 操作的处理方式:
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 限制

早于 8.0.1 的 MySQL 版本不会在 binlog 中包含完整的列元数据 (binlog_row_metadata=FULL) ,因此 ClickPipes 会按列的序号跟踪列。这意味着:
  • 在末尾添加列 (ALTER TABLE ADD COLUMN ...) 受支持。
  • 任何会导致列位置移位的 DDL 都会导致管道报错,因为届时将无法再可靠地按序号进行映射。这包括:
    • ALTER TABLE DROP COLUMN ...
    • ALTER TABLE ADD COLUMN ... AFTER ... / FIRST
    • ALTER TABLE MODIFY COLUMN ... AFTER ... / FIRST
    • ALTER TABLE CHANGE COLUMN ... AFTER ... / FIRST
如果遇到此错误,您需要重新同步该管道。
最后修改于 2026年6月10日