PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

chave duplicada postgresql viola restrição exclusiva


Este artigo explica que sua sequência pode estar fora de sincronia e que você precisa restaurá-la manualmente.

Um trecho do artigo caso o URL mude:

Se você receber esta mensagem ao tentar inserir dados em um banco de dados PostgreSQL:
ERROR:  duplicate key violates unique constraint

Isso provavelmente significa que a sequência de chave primária na tabela com a qual você está trabalhando ficou de alguma forma fora de sincronia, provavelmente devido a um processo de massimport (ou algo nesse sentido). Chame isso de "bug bydesign", mas parece que você precisa redefinir manualmente o índice de uma chave primária após a restauração de um arquivo de despejo. De qualquer forma, para ver se seus valores estão fora de sincronia, execute estes dois comandos:
SELECT MAX(the_primary_key) FROM the_table;   
SELECT nextval('the_primary_key_sequence');

Se o primeiro valor for maior que o segundo valor, sua sequência está fora de sincronia. Faça backup do seu banco de dados PG (apenas por precaução) e execute este comando:
SELECT setval('the_primary_key_sequence', (SELECT MAX(the_primary_key) FROM the_table)+1);

Isso definirá a sequência para o próximo valor disponível que for superior a qualquer chave primária existente na sequência.