Tento článek vysvětluje, že vaše sekvence může být nesynchronizovaná a že ji musíte synchronizovat ručně.
Výňatek z článku v případě změny adresy URL:
Pokud se při pokusu o vložení dat do databáze PostgreSQL zobrazí tato zpráva:
ERROR: duplicate key violates unique constraint
To pravděpodobně znamená, že sekvence primárních klíčů v tabulce, se kterou pracujete, se nějak nesynchronizovala, pravděpodobně kvůli procesu hromadného importu (nebo něčemu v tomto smyslu). Nazývejte to „bydesignem chyby“, ale zdá se, že po obnovení ze souboru výpisu musíte ručně resetovat index primárního klíče. Chcete-li v každém případě zjistit, zda jsou vaše hodnoty nesynchronizované, spusťte tyto dva příkazy:
SELECT MAX(the_primary_key) FROM the_table;
SELECT nextval('the_primary_key_sequence');
Pokud je první hodnota vyšší než druhá, vaše sekvence není synchronizovaná. Zálohujte svou databázi PG (pro jistotu) a poté spusťte tento příkaz:
SELECT setval('the_primary_key_sequence', (SELECT MAX(the_primary_key) FROM the_table)+1);
Tím se sekvence nastaví na další dostupnou hodnotu, která je vyšší než jakýkoli existující primární klíč v sekvenci.