El otro día nos encontramos con un problema tras actulizar unas tablas en postgresql con auto_increment en su campo id. Después de copiar los datos de otra tabla que contenía varios registros, la aplicación daba un error al intentar añadir un nuevo campo en esa tabla. Entonces nos dimos cuenta de que el problema podría venir de la secuencia del campo auto_increment. La tabla original en un principio tenía dos registros, por lo que al siguiente registro le correspondería el id 3, sin embargo, al haber actualizado la tabla con nuevos registros, ese id ya existe y por esta razón no nos dejaba añadir nuevos registros.

Así que para solucionarlo nada más simple que modificar la secuencia con el id que correspondería:

#Primero de todo, conectamos con postgresql. Nos pedirá la contraseña
psql -h localhost -U nombre_de_usuario nombre_de_base_de_datos
 
#Una vez conectados, comprobamos el nombre de nuestro campo secuencial
\ds
 
#Localizado el campo, en nuestros ejemplo tabla_id_seq, modificamos el valor secuencial para que coincida con el siguiente id
 
#Tras hacer un select * nombre_de_tabla order by nombre_de_tabla.id, observamos que el último registro es 11, por lo que el siguiente tendría que ser 12:
ALTER SEQUENCE tabla_id_seq RESTART WITH 12;
 
# Salimos de postgresql
\q

y voila! ya podemos volver a añadir registros normalmente.