Mam tabelę w bazie danych PostgreSQL, która jest używana w środowisku testowym, gdzie musimy dodawać i upuszczać kilka kolumn na raz. Problem polega na tym, że postgres ma maksymalnie 1600 kolumn, a liczba ta obejmuje zrzucone kolumny. Moja tabela nigdy nie będzie miała 1600 całkowitych kolumn "niezamocowanych", ale z biegiem czasu gromadzi się do ponad 1600 z kroplami.Wyczyść postgres wiedzy o zrzuconych kolumnach
Próbowałem za pomocą VACUUM
i VACUUM FULL
, a próbowałem przekształcenia istniejącej kolumny jako własnego typu (ALTER TABLE table ALTER COLUMN anycol TYPE anytype
) spowodowania postgres skanować wszystkie kolumny i oczyścić pamięć spadła z kolumn, ale żaden z te resetują postgres "` numer kolumny. "
Wiem, że można to rozwiązać, kopiując całą tabelę, ale to ma swoje własne problemy i jest w osobnym pytaniu.
Czy znasz sposób, aby postgre zapomnieć, że spadły kolumny?
Wiem, że Postgres nie został zaprojektowany dla takich aplikacji, ale nie zamierzam się zastanawiać, dlaczego zdecydowaliśmy się go wdrożyć w ten sposób. Jeśli masz alternatywne narzędzie do użycia, chciałbym o tym usłyszeć, ale nadal chciałbym znaleźć rozwiązanie tego problemu.
Powiedziałeś, że wypróbowałeś "VACUUM" na stole. A co z "VACUUM FULL"? Lub może, 'ALTER tabeli tabeli ALTER COLUMN anyycol TYPE anytype;', zmieniając kolumnę na ten sam typ, który już ma. –
Jak już wiesz, istnieją co najmniej dwa sposoby1): CREATE TABLE nowe AS wybierz * Z tabeli_table; zmieniać nazwy; Innym jest pg_dump - ttable; upuść stół; odtwórz tabelę z wyników pg_dump. W obu przypadkach będziesz musiał zrekonstruować ograniczenia FK (co jest nieco prostsze w drugim przypadku). – joop