我们正在两个数据库之间进行 Postgres 本机逻辑复制。
现在,我们在尝试从发布者那里更新我们拥有的一千个表中的一个时遇到错误。
当我们尝试更新表时,它返回此错误:
错误:发布使用的列列表未涵盖副本标识。无法更新表“etiquetas_j”。
错误:无法更新表“etiquetas_j”Estado SQL:42P10 详细信息:发布使用的列列表未涵盖副本标识。
发布者和订阅者的表定义、数据类型、索引和 pkey 相同
看这里:
出版商:
CREATE TABLE IF NOT EXISTS public.etiquetas_j (
etiqueta_id integer NOT NULL,
fecha timestamp without time zone,
j_id integer NOT NULL,
usuario_del_id integer,
usuario_mod_id integer,
organigrama_mod character varying(2) COLLATE pg_catalog."default",
id integer NOT NULL DEFAULT nextval('etiquetas_j_id_seq1'::regclass),
CONSTRAINT etiquetas_j_pkey PRIMARY KEY (id))
TABLESPACE pg_default; ALTER TABLE IF EXISTS public.etiquetas_j
OWNER to postgres;
CREATE INDEX IF NOT EXISTS etiquetas_j_etiqueta_id_idx
ON public.etiquetas_j USING btree
(etiqueta_id ASC NULLS LAST)
TABLESPACE pg_default;
CREATE INDEX IF NOT EXISTS etiquetas_j_id_idx
ON public.etiquetas_j USING btree
(j_id ASC NULLS LAST)
TABLESPACE pg_default;
订阅者:
CREATE TABLE IF NOT EXISTS public.etiquetas_j
(
etiqueta_id integer NOT NULL,
fecha timestamp without time zone,
j_id integer NOT NULL,
usuario_del_id integer,
usuario_mod_id integer,
organigrama_mod character varying(2) COLLATE pg_catalog."default",
id integer NOT NULL DEFAULT nextval('etiquetas_j_id_seq1'::regclass),
CONSTRAINT etiquetas_j_pkey PRIMARY KEY (id)
)
TABLESPACE pg_default;
ALTER TABLE IF EXISTS public.etiquetas_j
OWNER to postgres;
CREATE INDEX IF NOT EXISTS etiquetas_j_etiqueta_id_idx
ON public.etiquetas_j USING btree
(etiqueta_id ASC NULLS LAST)
TABLESPACE pg_default;
CREATE INDEX IF NOT EXISTS etiquetas_j_id_idx
ON public.etiquetas_j USING btree
(j_id ASC NULLS LAST)
TABLESPACE pg_default;
该出版物的定义如下:
CREATE PUBLICATION publication_visor FOR TABLE etiquetas_j(
etiqueta_id,
fecha,
j_id,
usuario_del_id,
usuario_mod_id ,
organigrama_mod,
id)
当我们在provider中执行时出现错误:
update etiquetas_j set organigrama_mod = '02' where id = 3;
谢谢,抱歉英语不好!
我们已经检查过:
- 看看索引是什么。
- 查看两种模式有何不同。
- 查看发布者在发布创建时发送的内容。
- 应用 ALTER TABLE etiquetas_j REPLICA IDENTITY FULL;