sql >> Database teknologi >  >> RDS >> PostgreSQL

postgresql duplikatnøgle overtræder unik begrænsning

Denne artikel forklarer, at din sekvens muligvis er ude af synkronisering, og at du manuelt skal bringe den tilbage i synkronisering.

Et uddrag fra artiklen, hvis webadressen ændres:

Hvis du får denne besked, når du prøver at indsætte data i en PostgreSQL-database:

ERROR:  duplicate key violates unique constraint
 

Det betyder sandsynligvis, at den primære nøglesekvens i den tabel, du arbejder med, på en eller anden måde er blevet ude af synkronisering, sandsynligvis på grund af en masseimportproces (eller noget i den retning). Kald det en "bug bydesign", men det ser ud til, at du manuelt skal nulstille en primærnøgleindeks efter gendannelse fra en dumpfil. I hvert fald, for at se, om dine værdier er ude af synkronisering, skal du køre disse to kommandoer:

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

Hvis den første værdi er højere end den anden værdi, er din sekvens ude af sync. Sikkerhedskopier din PG-database (for en sikkerheds skyld), og kør derefter denne kommando:

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

Det vil sætte sekvensen til den næste tilgængelige værdi, der er højere end enhver eksisterende primær nøgle i sekvensen.



  1. SQLite-undtagelse under forsøg på at slette række

  2. Databaseindeksering i PostgreSQL

  3. Brug af MySQL med Entity Framework

  4. Hvordan Trunc() virker i PostgreSQL