Den här artikeln förklarar att din sekvens kan vara osynkroniserad och att du måste återställa den manuellt.
Ett utdrag ur artikeln om webbadressen ändras:
Om du får detta meddelande när du försöker infoga data i en PostgreSQL-databas:
ERROR: duplicate key violates unique constraint
Det betyder troligen att den primära nyckelsekvensen i tabellen du arbetar med på något sätt har blivit osynkroniserad, troligen på grund av en massimportprocess (eller något i den stilen). Kalla det en "bugg bydesign", men det verkar som att du måste återställa en primärnyckelindex manuellt efter att ha återställt från en dumpfil. Hur som helst, för att se om dina värden är osynkroniserade, kör dessa två kommandon:
SELECT MAX(the_primary_key) FROM the_table;
SELECT nextval('the_primary_key_sequence');
Om det första värdet är högre än det andra värdet är din sekvens inte synkroniserad. Säkerhetskopiera din PG-databas (för säkerhets skull), kör sedan detta kommando:
SELECT setval('the_primary_key_sequence', (SELECT MAX(the_primary_key) FROM the_table)+1);
Det kommer att ställa in sekvensen till nästa tillgängliga värde som är högre än någon befintlig primärnyckel i sekvensen.