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

Po przywróceniu mojej bazy danych serial usunięty z kolumny w Postgresql

Nie sprawdzałeś błędów podczas przywracania bazy danych; powinno być ich kilka.

Zrzut tabeli takiej jak twoja będzie wyglądał tak w PostgreSQL v10 (to jest 10.3 i wygląda nieco inaczej w 10.1, ale nie ma to znaczenia w tym przypadku):

CREATE TABLE public.produto (
    produto_id integer NOT NULL
);

ALTER TABLE public.produto OWNER TO laurenz;

CREATE SEQUENCE public.produto_produto_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE public.produto_produto_id_seq OWNER TO laurenz;

ALTER SEQUENCE public.produto_produto_id_seq
    OWNED BY public.produto.produto_id;

ALTER TABLE ONLY public.produto
    ALTER COLUMN produto_id
    SET DEFAULT nextval('public.produto_produto_id_seq'::regclass);

Problem polega na tym, że AS integer został wprowadzony do CREATE SEQUENCE w PostgreSQL v10, więc instrukcja zakończy się niepowodzeniem z błędem składni w wersji 9.6.

Jakie są konsekwencje?

  • Tabela jest tworzona jak w pierwszej instrukcji.

  • Trzecia instrukcja tworząca sekwencję kończy się niepowodzeniem.

  • Wszystkie poniższe instrukcje, które wymagają sekwencji, również zakończą się niepowodzeniem.

Uwaga: Nie jest obsługiwane obniżenie wersji PostgeSQL za pomocą zrzutu i przywrócenia.

Rozwiązaniem jest ręczna edycja zrzutu, dopóki nie zadziała, w szczególności będziesz musiał usunąć AS integer lub AS bigint klauzula w CREATE SEQUENCE .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przywrócić plik zrzutu PostgreSQL do baz danych Postgres?

  2. Seminarium internetowe:Bankowość w Postgres — rozważania dotyczące aplikacji finansowych [Kontynuacja]

  3. Czy w nazwach kolumn PostgreSQL jest rozróżniana wielkość liter?

  4. Tworzenie użytkownika PostgreSQL i dodawanie go do bazy danych

  5. Jak dodać kolumnę, jeśli nie istnieje w PostgreSQL?