In diesem Artikel wird erläutert, dass Ihre Sequenz möglicherweise nicht mehr synchron ist und Sie sie manuell wieder synchronisieren müssen.
Ein Auszug aus dem Artikel, falls sich die URL ändert:
Wenn Sie diese Meldung erhalten, wenn Sie versuchen, Daten in eine PostgreSQL-Datenbank einzufügen:
ERROR: duplicate key violates unique constraint
Das bedeutet wahrscheinlich, dass die Primärschlüsselsequenz in der Tabelle, mit der Sie arbeiten, irgendwie nicht mehr synchron ist, wahrscheinlich aufgrund eines Massenimport-Prozesses (oder etwas in der Art). Nennen Sie es ein "Bug Bydesign", aber es scheint, dass Sie den Primärschlüsselindex nach dem Wiederherstellen aus einer Dump-Datei manuell zurücksetzen müssen. Um zu sehen, ob Ihre Werte nicht synchron sind, führen Sie auf jeden Fall diese beiden Befehle aus:
SELECT MAX(the_primary_key) FROM the_table;
SELECT nextval('the_primary_key_sequence');
Wenn der erste Wert höher als der zweite Wert ist, ist Ihre Sequenz nicht synchron. Sichern Sie Ihre PG-Datenbank (nur für den Fall) und führen Sie dann diesen Befehl aus:
SELECT setval('the_primary_key_sequence', (SELECT MAX(the_primary_key) FROM the_table)+1);
Dadurch wird die Sequenz auf den nächsten verfügbaren Wert gesetzt, der höher ist als jeder vorhandene Primärschlüssel in der Sequenz.