23505: unique_violation
PostgreSQL¿Qué significa?
La fila insertada o actualizada viola una restricción UNIQUE o la PRIMARY KEY; el mismo valor ya existe en la tabla.
¿Por qué ocurre?
Volver a insertar con la misma clave única, introducir datos duplicados en una columna única, el valor de la secuencia que se queda atrás por inserciones manuales o dos peticiones concurrentes que insertan la misma clave.
Cómo solucionarlo
El nombre de la restricción y el valor de la clave en el detalle del error muestran qué fila entra en conflicto. Para actualizar la fila existente, use INSERT ... ON CONFLICT (my_column) DO UPDATE o DO NOTHING. Para encontrar duplicados: SELECT my_column, COUNT(*) FROM my_table GROUP BY my_column HAVING COUNT(*) > 1. Si la secuencia se quedó atrás: SELECT setval('seq_name', (SELECT MAX(id) FROM my_table)).