我为postgres数据库使用了symmetricds复制(一个服务器节点,一个客户端节点)。我的数据库中有两个模式:' public'和' schemaB'。 schemaB(tabB)中的表具有公共模式(tabA)中表的外键引用字段。
表格定义:
CREATE TABLE schemaB.tabB (
id character varying(255) NOT NULL,
external_id character varying(255),
)
ALTER TABLE ONLY schemaB.tabB
ADD CONSTRAINT fk_ma9cnn7779v065434iugg1321 FOREIGN KEY (external_id) REFERENCES public.tabA(id);
上述表格的Symmetricds配置:
insert into sym_trigger (trigger_id, source_schema_name, source_table_name, channel_id, sync_on_incoming_batch, last_update_time, create_time) values
('tid', 'schemaB', 'tabB', 'channel_B', 0, current_timestamp, current_timestamp);
在客户端节点的初始加载期间,symmetricds尝试创建具有定义的表:
ALTER TABLE "schemaB"."tabB"
ADD CONSTRAINT "fk_ma9cnn7779v065434iugg1321" FOREIGN KEY ("external_id") REFERENCES schemaB."tabA" ("id");
导致错误的原因:
ERROR: relation "schemaB.users" does not exist. Failed to execute: ALTER TABLE "schemaB"."tabB"
ADD CONSTRAINT "fk_ma9cnn7779v065434iugg1321" FOREIGN KEY ("external_id") REFERENCES schemaB."tabA" ("id")
Symmetricds明确引用了错误的架构。我可以做些什么吗?
答案 0 :(得分:0)
我建议为两个模式ReadChar [number, col, row]
和public
使用两个symmetricDs引擎,它们将同步到目标节点上的相应模式。要创建另一个引擎,只需复制symmetric-ds.properties文件,将其重命名为,让我们说schemaB
并编辑以连接到symmetric-ds-public.properties
架构。