2017-05-04 1 views
1

J'utilise SymetricDS et symétrique parfois soulever une erreur:SymmetricDS mise à jour d'erreur double clé

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à. 

J'ai essayé de détecter et de conflits corrects par insertion dans sym_conflict cette ligne:

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'); 

mais cela ne travail. Sur la documentation ont trouvé ceci:

USE_CHANGED_DATA: Indique que la clé primaire plus toutes les données qui ont changé sur le système source seront utilisées pour détecter un conflit. S'il existe une ligne avec les mêmes anciennes valeurs sur le système cible que sur le système source pour les colonnes modifiées sur le système source, aucun conflit n'est détecté pendant une mise à jour ou une suppression. Si une ligne existe déjà pendant une insertion, un conflit a été détecté.

Comment symétrique peut détecter les conflits PK sur une mise à jour et l'ignorer? Merci.

Répondre

1

Aucune détection de conflit, aucune résolution n'est requise dans de tels cas. Par défaut, symmetricDs sur insert s'il y a déjà une ligne avec la même clé primaire sur le noeud cible reviendra à update et vice versa pour une mise à jour retombant dans un insert: http://www.symmetricds.org/doc/3.6/user-guide/html-single/user-guide.html#d4e104

+0

Merci, mais cela ne fonctionne pas dans mon symétrique (3.8), réessayer symétrique et échoue à chaque fois – lolusab

+0

avez-vous supprimé les données de sym_conflict? –

+0

oui J'ai supprimé des données dans 'sym_conflict',' sym_conflit' est vide. Le lot sortant échoue toujours. – lolusab