sql >> Databasteknik >  >> RDS >> PostgreSQL

Duplicera kolumn efter byte från seriell till identitetsdatatyp i PostgreSQL / pgAdmin4

Efter lång sökning här är vad jag hittade:

Det finns faktiskt bara en kolumn som kan bekräftas med psql. Men genom att använda kommandot pg_dump -st names från bash märkte jag att det fanns 2 sekvenser som definierades associerade med id-kolumnen:public.names_id_seq och public.names_id_seq1 .

Detta kan också bekräftas genom att köra SELECT c.relname FROM pg_class c WHERE c.relkind ='S'; från psql där båda sekvenserna visas.

Om man försöker ta bort public.names_id_seq1 man får felet ERROR:kan inte släppa sekvensen apis_id_seq1 eftersom kolumn-id för tabell-apis kräver det .

Lösningen är att ta bort den första sekvensen med DROP SEQUENCE names_id_seq; Efter att ha uppdaterat pgAdmin4 var den andra kolumnen borta.

TL;DR

  1. Kör SELECT c.relname FROM pg_class c WHERE c.relkind ='S'; och identifiera dubbletter av sekvenser (dvs. de där det finns en version med och en utan 1 i slutet)

  2. Ta bort den överflödiga sekvensen med DROP SEQUENCE ; (endast den utan 1 i slutet kan raderas)

  3. Uppdatera pgAdmin4




  1. Laravel 5.4 ger fel COM_STMT_PREPARE svarsstorlek

  2. Förbättra en fråga med många inre kopplingar till wp_postmeta, en nyckel-/värdetabell

  3. enstaka citattecken visas runt värdet efter att ha kört kopia i postgres 9.2

  4. återställ rader till standardkolumnvärdet mysql