TOAST 列、replication slot、publication、schema 变更和数据类型映射——都可在 ClickPipes for Postgres FAQ 中找到解答。其中的信息同样适用于 ClickHouse Managed Postgres 迁移。
复制期间出现“枚举 输入值无效”错误
ALTER TYPE ... ADD VALUE 命令,因此,如果在初始 schema 设置完成后,源端新增了 枚举 值,就会导致目标端插入失败。
要解决此问题,请在目标 Postgres 上为该 枚举 类型补上缺失的值:
your_enum_type 替换为你的枚举类型名称,并将 'new_value' 替换为错误消息中缺少的值。
复制期间出现唯一约束或检查约束冲突错误
- 唯一约束:我们以批次
MERGE/UPSERT操作应用更改,为每个主键写入最新值。因此,特定键的操作顺序可能与唯一索引预期的顺序不一致。即使MERGE完成后约束能够满足,事务过程中也可能暂时违反UNIQUE约束。Postgres 无法像延迟外键检查那样延迟唯一索引检查,因此无法将检查推迟到事务结束时。这不会影响数据一致性:行身份由主键定义,MERGE逻辑也基于同一主键。 - 检查约束:目标端的检查约束可能比源端更严格,或者批次
MERGE期间的中间状态可能不满足该约束,即使最终状态满足。与唯一约束一样,这不会影响数据一致性,因为MERGE基于定义行身份的主键。