DBAtlas · Atlas d'exploitation des bases de données

23505: unique_violation

PostgreSQL

Que signifie cette erreur ?

La ligne insérée ou mise à jour viole une contrainte UNIQUE ou la PRIMARY KEY ; la même valeur existe déjà dans la table.

Cause

Réinsertion avec la même clé unique, saisie de données en double dans une colonne unique, valeur de séquence en retard à cause d'insertions manuelles, ou deux requêtes concurrentes insérant la même clé.

Comment la corriger

Le nom de la contrainte et la valeur de clé dans le détail de l'erreur indiquent quelle ligne est en conflit. Pour mettre à jour la ligne existante, utilisez INSERT ... ON CONFLICT (my_column) DO UPDATE ou DO NOTHING. Pour trouver les doublons : SELECT my_column, COUNT(*) FROM my_table GROUP BY my_column HAVING COUNT(*) > 1. Si la séquence a pris du retard : SELECT setval('seq_name', (SELECT MAX(id) FROM my_table)).

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur