23505: unique_violation
PostgreSQLO que significa?
A linha inserida ou atualizada viola uma constraint UNIQUE ou a PRIMARY KEY; o mesmo valor já existe na tabela.
Por que acontece?
Reinserção com a mesma chave única, entrada de dados duplicados em uma coluna única, o valor da sequence ficando para trás por causa de inserts manuais, ou duas requisições concorrentes inserindo a mesma chave.
Como resolver
O nome da constraint e o valor da chave no detalhe do erro mostram qual linha está em conflito. Para atualizar a linha existente, use INSERT ... ON CONFLICT (my_column) DO UPDATE ou DO NOTHING. Para encontrar duplicatas: SELECT my_column, COUNT(*) FROM my_table GROUP BY my_column HAVING COUNT(*) > 1. Se a sequence ficou para trás: SELECT setval('seq_name', (SELECT MAX(id) FROM my_table)).