sql >> Base de Datos >  >> RDS >> PostgreSQL

La clave duplicada de postgresql viola la restricción única

Este artículo explica que su secuencia podría no estar sincronizada y que debe volver a sincronizarla manualmente.

Un extracto del artículo en caso de que cambie la URL:

Si recibe este mensaje cuando intenta insertar datos en una base de datos de PostgreSQL:

ERROR:  duplicate key violates unique constraint

Eso probablemente significa que la secuencia de teclas principales en la tabla con la que está trabajando se ha desincronizado de alguna manera, probablemente debido a un proceso de importación masiva (o algo por el estilo). Llámelo un "error por diseño", pero parece que tiene que restablecer manualmente el índice de clave principal después de restaurar desde un archivo de volcado. En cualquier caso, para ver si sus valores no están sincronizados, ejecute estos dos comandos:

SELECT MAX(the_primary_key) FROM the_table;   
SELECT nextval('the_primary_key_sequence');

Si el primer valor es mayor que el segundo valor, su secuencia no está sincronizada. Haga una copia de seguridad de su base de datos PG (por si acaso), luego ejecute este comando:

SELECT setval('the_primary_key_sequence', (SELECT MAX(the_primary_key) FROM the_table)+1);

Eso establecerá la secuencia en el siguiente valor disponible que sea más alto que cualquier clave principal existente en la secuencia.