我有一个Postgres BDR集群,有2个节点(多主复制)。我创建了一个带有自动增量主键的表,如下所示:
create table t1 (id serial primary key, name text);
我在node1上添加了一些值:
insert into t1(name) values('foo');
现在当我尝试从node2向该表添加另一个值时,我收到该错误:
ERROR: duplicate key value violates unique constraint "t1_pkey"
DETAIL: Key (id)=(1) already exists.
您的问题是两个数据库都有自己的序列,这些序列是数据库的本地序列而不是复制的。这会导致复制冲突。
您可以执行以下操作:
START 1 INCREMENT2
的序列,在另一个数据库中使用START 2 INCREMENT 2
,这样序列值就不会发生冲突。