2017-05-04 86 views
1

我用SymetricDS有時對稱引發錯誤:SymmetricDS更新錯誤重複鍵

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衝突並忽略它?謝謝。

回答

1

沒有衝突檢測,在這種情況下都不需要解析。默認情況下,如果在目標節點上已經有一個具有相同主鍵的行,插入時缺省爲symmetricDs將回退到更新,反之亦然,以便更新回落到插入:http://www.symmetricds.org/doc/3.6/user-guide/html-single/user-guide.html#d4e104

+0

謝謝,但這不適用於我的對稱( 3.8),對稱重試並且每次都失敗 – lolusab

+0

您是否從sym_conflict中刪除了數據? –

+0

是的,我已經刪除了'sym_conflict'中的數據,'sym_conflit'是空的。離開的批次總是失敗。 – lolusab