31.3. Conflicts

逻辑复制的行为与普通 DML 操作类似,因为即使在订阅者节点上本地更改了数据,数据也将被更新。如果传入数据违反任何约束,则复制将停止。这称为* conflict *。复制UPDATEDELETE操作时,丢失的数据不会产生冲突,因此将直接跳过此类操作。

冲突将产生错误并停止复制;它必须由用户手动解决。有关冲突的详细信息可以在订户的服务器日志中找到。

可以通过更改订户上的数据以使其与传入的更改不冲突,或跳过与现有数据冲突的事务来解决该问题。可以通过调用pg_replication_origin_advance()函数(带有与订阅名称和位置对应的* node_name *)来跳过事务。原点的当前位置可以在pg_replication_origin_status系统视图中看到。