sql >> Database teknologi >  >> RDS >> PostgreSQL

Dupliker kolonne efter skift fra seriel til identitetsdatatype i PostgreSQL / pgAdmin4

Efter længere tids søgning er her, hvad jeg fandt:

Der er faktisk kun én kolonne, som kan bekræftes ved hjælp af psql. Men ved at bruge kommandoen pg_dump -st names fra bash bemærkede jeg, at der var 2 sekvenser, der blev defineret, forbundet med id-kolonnen:public.names_id_seq og public.names_id_seq1 .

Dette kan også bekræftes ved at køre SELECT c.relname FROM pg_class c WHERE c.relkind ='S'; fra psql, hvor begge sekvenser vises.

Hvis man forsøger at slette public.names_id_seq1 man får fejlen FEJL:kan ikke droppe sekvensen apis_id_seq1, fordi kolonne-id for tabel-apis kræver det .

Løsningen er at slette den første sekvens med DROP SEQUENCE names_id_seq; Efter at have opdateret pgAdmin4 var den anden kolonne væk.

TL;DR

  1. Kør SELECT c.relname FROM pg_class c WHERE c.relkind ='S'; og identificer duplikerede sekvenser (dvs. dem, hvor der er en version med og en uden et 1 i slutningen)

  2. Slet den overflødige sekvens med DROP SEQUENCE ; (kun den uden 1 i slutningen kan slettes)

  3. Opdater pgAdmin4




  1. Sådan sender du en databaseværdi i et hyperlink ved hjælp af PHP + HTML

  2. Sådan bruges en temp-kolonne i where-klausulen

  3. hvilken type motor (InnoDB eller MyISAM) skal jeg bruge til min database til et websted?

  4. Hvordan man giver brugeren eksekvering på en specifik lagret procedure