PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zduplikowana kolumna po przełączeniu z typu danych szeregowego na tożsamość w PostgreSQL / pgAdmin4

Po długich poszukiwaniach znalazłem:

Rzeczywiście istnieje tylko jedna kolumna, którą można potwierdzić za pomocą psql. Jednak za pomocą polecenia pg_dump -st names <databasename> z basha zauważyłem, że zdefiniowano 2 sekwencje powiązane z kolumną id:public.names_id_seq i public.names_id_seq1 .

Można to również potwierdzić, uruchamiając SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; z psql, gdzie pojawiają się obie sekwencje.

Jeśli spróbujesz usunąć public.names_id_seq1 pojawia się błąd ERROR: cannot drop sequence apis_id_seq1 because column id of table apis requires it .

Rozwiązanie jest usunięcie pierwszej sekwencji z DROP SEQUENCE names_id_seq; Po odświeżeniu pgAdmin4 druga kolumna zniknęła.

TL;DR

  1. Uruchom SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; i zidentyfikuj zduplikowane sekwencje (tj. te, w których jest wersja z i jedna bez 1 na końcu)

  2. Usuń zbędną sekwencję za pomocą DROP SEQUENCE <sequenceName_seq>; (tylko ten bez 1 na końcu może zostać usunięty)

  3. Odśwież pgAdmin4




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. błąd instrukcji sql:kolumna .. nie istnieje

  2. serial w postgresie jest zwiększany mimo że dodałem na konflikcie nic nie rób

  3. Zakres Rails dla IS NOT NULL i nie jest pusty/pusty?

  4. Pliki ewolucji Playframework kompatybilne zarówno z postgresem, jak i h2

  5. Jak używać pakietu graphql-type-json z GraphQl