sql >> Databasteknik >  >> RDS >> PostgreSQL

postgresql duplicate key bryter mot unik begränsning

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.



  1. Hur man hanterar MySQL-databaser, användare och tabeller från kommandoraden

  2. Kan jag skapa en databas med PDO i PHP?

  3. Låsa upp fördelarna med MariaDB:s Certified Associate Program

  4. Hur delar man upp en enskild kolumnvärden till flera kolumnvärden?