PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

la clé en double postgresql viole la contrainte unique

Cet article explique que votre séquence peut être désynchronisée et que vous devez la synchroniser manuellement.

Un extrait de l'article au cas où l'URL changerait :

Si vous obtenez ce message lorsque vous essayez d'insérer des données dans une base de données PostgreSQL :

ERROR:  duplicate key violates unique constraint

Cela signifie probablement que la séquence de clé primaire dans la table avec laquelle vous travaillez est en quelque sorte désynchronisée, probablement à cause d'un processus d'importation en masse (ou quelque chose du genre). Appelez cela un "bug bydesign", mais il semble que vous deviez réinitialiser manuellement l'index d'une clé primaire après la restauration à partir d'un fichier de vidage. Dans tous les cas, pour voir si vos valeurs ne sont pas synchronisées, exécutez ces deux commandes :

SELECT MAX(the_primary_key) FROM the_table;   
SELECT nextval('the_primary_key_sequence');

Si la première valeur est supérieure à la deuxième valeur, votre séquence est désynchronisée. Sauvegardez votre base de données PG (au cas où), puis exécutez cette commande :

SELECT setval('the_primary_key_sequence', (SELECT MAX(the_primary_key) FROM the_table)+1);

Cela définira la séquence sur la prochaine valeur disponible supérieure à toute clé primaire existante dans la séquence.