2

我正在使用 MySQL 运行两个 SymmetricDS 实例。

我必须启动和停止同步,为此我使用:

update sym_channel set enabled=0/1;

由于某种原因,当它们同步(enabled=1)时,我收到以下错误:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:     Cannot add or update a child row: a foreign key constraint fails (`test_db`.`defectstdreference`, CONSTRAINT `Relationship72` FOREIGN KEY (`improve_notice_doc_id`, `defect_id`, `client_id`) REFERENCES `improvementnoticedefect` (`doc_id`, `defect_id`, `client)

然而,在某些时候同步成功完成,所以所有这些异常都会显着减慢进程。

你知道是什么原因造成的吗?

4

1 回答 1

3

您是创建自己的频道还是使用默认频道?

如果您创建了自己的,它们可以相互独立地同步。因此,如果您在两个表之间有一个外键,并且父表使用 channelA 而子表使用 channelB,则可能 channelB 中的更改可能在 channelA 之前同步,从而导致外键错误。有时 channelB 可能会在 channelA 之后处理,因此这可能解释了意外行为。SymmetricDS 将重试任何有错误的批次,因此最终它会按顺序排列它们。为了避免这些错误,请确保您使用的所有相关表都参与同一个频道的自定义频道。

于 2015-04-23T12:51:28.177 回答