我已经使用 PostgreSQL 10 构建了一个主 -> 从设置,以将某些特定表中的数据同步到从机,这是公共系统。现在在整个过程中,我遇到了一些奇怪的行为:有些表根本不同步。
查看 PostgreSQL 日志,我遇到以下错误消息:
2018-06-07 15:28:30.163 CEST [4134] LOG: worker process: logical replication worker for subscription 18249 sync 17956 (PID 6706) exited with exit code 1
2018-06-07 15:28:30.183 CEST [6707] ERROR: duplicate key value violates unique constraint "producttext_pk"
2018-06-07 15:28:30.183 CEST [6707] DETAIL: Key (id)=(100) already exists.
2018-06-07 15:28:30.183 CEST [6707] CONTEXT: COPY producttext, line 1
为了进一步分析,我在从机上删除了这个表的主键,在这种情况下,错误不再发生,但是现在我在表中得到了重复的条目。
防止重复条目的唯一方法是将主键放在适当的位置,但是同步将无法正常工作,因为它一直在恰好四个表上循环,永远不会移动到其余的表。
我已经检查了角色和所有者,并且设置正确。如前所述,如果没有主键,一切都会同步,不会引发错误,但会创建重复条目。
在这一点上我可能错过了什么吗?非常感谢。