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

Columna duplicada después de cambiar de serie a tipo de datos de identidad en PostgreSQL/pgAdmin4

Después de una larga búsqueda, esto es lo que encontré:

De hecho, solo hay una columna que se puede confirmar con psql. Sin embargo, usando el comando pg_dump -st names <databasename> de bash noté que se definían 2 secuencias asociadas con la columna de identificación:public.names_id_seq y public.names_id_seq1 .

Esto también se puede confirmar ejecutando SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; de psql donde aparecen ambas secuencias.

Si uno intenta eliminar public.names_id_seq1 uno obtiene el error ERROR: cannot drop sequence apis_id_seq1 because column id of table apis requires it .

La solución es eliminar la primera secuencia con DROP SEQUENCE names_id_seq; Después de actualizar pgAdmin4, la segunda columna desapareció.

TL;RD

  1. Ejecute SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; e identificar secuencias duplicadas (es decir, aquellas en las que hay una versión con y otra sin 1 al final)

  2. Elimina la secuencia superflua con DROP SEQUENCE <sequenceName_seq>; (solo se puede eliminar el que no tiene un 1 al final)

  3. Actualizar pgAdmin4