我正在使用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)
然而,在某些时候,同步成功完成,所以所有这些异常都会显着减慢过程。
你知道可能会有什么问题吗?
答案 0 :(得分:3)
您是否创建了自己的频道或使用默认频道?
如果您创建了自己的,则可以彼此独立地进行同步。因此,如果两个表之间有外键,并且父表使用channelA而子表使用channelB,则channelB中的更改可能会在channelA之前同步,从而导致外键错误。有时channelB可以在channelA之后处理,因此这可以解释意外行为。 SymmetricDS将重试任何批次错误,因此最终会按顺序重新获取它们。为了避免这些错误,尽管一起确保您使用自定义渠道,所有相关的表都参与同一个渠道。