【问题标题】:SymmetricDS update error duplicate keySymmetricDS 更新错误重复键
【发布时间】:2017-05-04 08:09:50
【问题描述】:

我使用 SymetricDS,有时对称会引发错误:

INFO  [slave] [DefaultDatabaseWriter] [slave-data-loader-1] Failed to process update event in batch 298578.
ERROR [slave] [DataLoaderService]     [slave-data-loader-1] Failed to load batch 000-298578 StackTraceKey [UniqueKeyException:4114584735]
ERROR [master][AcknowledgeService]  [master-push-default-5] The outgoing batch 001-298578 failed: ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « primary_key_constaint_name » Détail : La clé existe déjà.

我试图通过在 sym_conflict 中插入这一行来检测和纠正冲突:

insert into sym_conflict(conflict_id, source_node_group_id, target_node_group_id, detect_type resolve_type, ping_back)
values('master-win', 'master', 'slave', 'USE_CHANGED_DATA', 'INGORE', 'SINGLE_ROW');

但这不起作用。在文档中发现了这个:

USE_CHANGED_DATA :表示将使用主键加上源系统上已更改的任何数据来检测冲突。如果目标系统上存在与源系统上已更改列的旧值相同的行,则源系统上已更改的列在更新或删除期间未检测到冲突。如果在插入期间已经存在行,则检测到冲突。

对称如何检测更新中的 PK 冲突并忽略它?谢谢。

【问题讨论】:

    标签: symmetricds


    【解决方案1】:

    没有冲突检测,在这种情况下也不需要解决方案。默认情况下,如果目标节点上已经存在具有相同主键的行,则插入时的 symmetricDs 将回退到更新,反之亦然,更新回退到插入:http://www.symmetricds.org/doc/3.6/user-guide/html-single/user-guide.html#d4e104

    【讨论】:

    • 谢谢,但这在我的对称(3.8)中不起作用,对称重试并且每次都失败
    • 您是否从 sym_conflict 中删除了数据?
    • 是的,我删除了sym_conflict 中的数据,sym_conflit 为空。传出批次总是失败。
    • sym_channelDATA_LOADER_TYPE列的值是多少?
    • 值为default
    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 2013-05-21
    • 1970-01-01
    • 2018-07-04
    • 2014-10-07
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多