Erreur de clé en double pendant une extraction
Problème
Une extraction en charge incrémentale ou en traitement des enregistrements supprimés échoue pendant l'étape de propagation, avec une erreur de clé en double, et la table n'est pas mise à jour. Le problème touche des tables comme GLAccountBalance, avec le message The duplicate key value is (ACCRUAL, USD, Nectari Opening 2026, 10122, A01, 302, <NULL>, 0, 0, 1830, 0, 0, 13, CP). The statement has been terminated.
Cause
Sur une table comme GLAccountBalance, la clé unique peut contenir un champ vide, enregistré sous la valeur NULL. L'option Les clés primaires ne contiennent pas de NULL demande cependant à DataSync d'ignorer ces valeurs vides, donc l'ancien enregistrement reste introuvable au moment de le supprimer pendant une charge incrémentale ou un traitement des enregistrements supprimés.
L'ancien enregistrement reste donc dans la table, et le nouvel enregistrement est refusé par la base de données, puisque les deux portent la même clé.
Solution
Désactivez l'option Les clés primaires ne contiennent pas de NULL sur l'extraction, puis relancez l'extraction.
- Dans DataSync, sélectionnez Extractions.
- Sélectionnez l'extraction qui a échoué.
- Cliquez sur l'icône crayon en haut à droite pour ouvrir la fenêtre Modifier l'extraction.
- Décochez la case Les clés primaires ne contiennent pas de NULL.
- Cliquez sur Enregistrer.
- Relancez l'extraction.
