W tym artykule wyjaśniono, że Twoja sekwencja może nie być zsynchronizowana i musisz ręcznie przywrócić synchronizację.
Fragment artykułu na wypadek zmiany adresu URL:
Jeśli pojawi się ten komunikat podczas próby wstawienia danych do bazy danych PostgreSQL:
ERROR: duplicate key violates unique constraint
To prawdopodobnie oznacza, że sekwencja klucza podstawowego w tabeli, z którą pracujesz, w jakiś sposób straciła synchronizację, prawdopodobnie z powodu procesu masowego importu (lub czegoś podobnego). Nazwij to „projektem błędu”, ale wydaje się, że musisz ręcznie zresetować indeks klucza podstawowego po przywróceniu z pliku zrzutu. W każdym razie, aby sprawdzić, czy wartości nie są zsynchronizowane, uruchom te dwa polecenia:
SELECT MAX(the_primary_key) FROM the_table;
SELECT nextval('the_primary_key_sequence');
Jeśli pierwsza wartość jest wyższa od drugiej, sekwencja nie jest zsynchronizowana. Utwórz kopię zapasową bazy danych PG (na wszelki wypadek), a następnie uruchom to polecenie:
SELECT setval('the_primary_key_sequence', (SELECT MAX(the_primary_key) FROM the_table)+1);
To ustawi sekwencję na następną dostępną wartość, która jest wyższa niż jakikolwiek istniejący klucz główny w sekwencji.