SymmetricDS复制引用外键的错误模式

时间:2017-04-05 08:03:15

标签: database postgresql symmetricds

我为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明确引用了错误的架构。我可以做些什么吗?

1 个答案:

答案 0 :(得分:0)

我建议为两个模式ReadChar [number, col, row] public使用两个symmetricDs引擎,它们将同步到目标节点上的相应模式。要创建另一个引擎,只需复制symmetric-ds.properties文件,将其重命名为,让我们说schemaB并编辑以连接到symmetric-ds-public.properties架构。