sql >> Database >  >> RDS >> PostgreSQL

Dubbele kolom na overschakelen van serieel naar identiteitsgegevenstype in PostgreSQL / pgAdmin4

Na lang zoeken heb ik dit gevonden:

Er is inderdaad maar één kolom die kan worden bevestigd met psql. Maar met het commando pg_dump -st names <databasename> van bash merkte ik dat er 2 reeksen werden gedefinieerd die waren gekoppeld aan de id-kolom:public.names_id_seq en public.names_id_seq1 .

Dit kan ook worden bevestigd door SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; uit te voeren van psql waar beide reeksen verschijnen.

Als men probeert public.names_id_seq1 te verwijderen men krijgt de fout ERROR: cannot drop sequence apis_id_seq1 because column id of table apis requires it .

De oplossing is om de eerste reeks te verwijderen met DROP SEQUENCE names_id_seq; Na het vernieuwen van pgAdmin4 was de tweede kolom verdwenen.

TL;DR

  1. Voer SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; en identificeer dubbele reeksen (dwz degene met een versie met en een zonder een 1 aan het einde)

  2. Verwijder de overbodige reeks met DROP SEQUENCE <sequenceName_seq>; (alleen degene zonder 1 aan het einde kan worden verwijderd)

  3. Ververs pgAdmin4




  1. Beginnummer van bestelling wijzigen in Magento

  2. PostgreSQL:verbindingen tijdelijk uitschakelen

  3. SQL Server:UPDATE een tabel met ORDER BY

  4. String- en NULL-waarden samenvoegen in SQL Server