sql >> Databáze >  >> RDS >> PostgreSQL

duplicitní klíč postgresql porušuje jedinečné omezení

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.



  1. Zakázat a později povolit všechny indexy tabulek v Oracle

  2. SQLite JSON_GROUP_OBJECT()

  3. Jak migrovat databáze na váš Reseller Server

  4. Volání uložené procedury s parametrem v c#