我用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)

然而,在某些时间内同步成功完成,所以所有这些异常都会显著地减慢进程。
你知道是什么引起的吗?

最佳答案

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

关于java - SymmetricDS异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29804070/

10-12 22:34