PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Colonne en double après le passage du type de données série au type de données d'identité dans PostgreSQL / pgAdmin4

Après de longues recherches voici ce que j'ai trouvé :

Il n'y a en effet qu'une seule colonne qui peut être confirmée en utilisant psql. Cependant en utilisant la commande pg_dump -st names <databasename> de bash j'ai remarqué qu'il y avait 2 séquences définies associées à la colonne id :public.names_id_seq et public.names_id_seq1 .

Cela peut également être confirmé en exécutant SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; de psql où les deux séquences apparaissent.

Si on essaie de supprimer public.names_id_seq1 on obtient l'erreur ERROR: cannot drop sequence apis_id_seq1 because column id of table apis requires it .

La solution est de supprimer la première séquence avec DROP SEQUENCE names_id_seq; Après avoir actualisé pgAdmin4, la deuxième colonne avait disparu.

TL;DR

  1. Exécutez SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; et identifier les séquences en double (c'est-à-dire celles où il y a une version avec et une sans 1 à la fin)

  2. Supprimez la séquence superflue avec DROP SEQUENCE <sequenceName_seq>; (seul celui sans 1 à la fin peut être supprimé)

  3. Actualiser pgAdmin4