Aller au contenu principal

Erreur de clé en double pendant une extraction

Dépannage, DataSync

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.

  1. Dans DataSync, sélectionnez Extractions.
  2. Sélectionnez l'extraction qui a échoué.
  3. Cliquez sur l'icône crayon en haut à droite pour ouvrir la fenêtre Modifier l'extraction.
  4. Décochez la case Les clés primaires ne contiennent pas de NULL.
  5. Cliquez sur Enregistrer.
  6. Relancez l'extraction.
Fenêtre Modifier l'extraction avec la case Les clés primaires ne contiennent pas de NULL mise en évidence