Не сте проверили за грешки по време на възстановяване на базата данни; трябваше да има няколко.
Дъмп на таблица като вашата ще изглежда така в PostgreSQL v10 (това е 10.3 и изглежда малко по-различно в 10.1, но това е без значение за този случай):
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);
Сега проблемът е, че AS integer
беше въведен в CREATE SEQUENCE
в PostgreSQL v10, така че този израз ще се провали със синтактична грешка в 9.6.
Каква е последицата?
-
Таблицата се създава както в първия израз.
-
Третият израз, създаващ последователността, е неуспешен.
-
Всички следващи изрази, които изискват последователността, също ще се провалят.
Забележка: Не се поддържа понижаване на PostgeSQL с dump и възстановяване.
Решението е ръчно да редактирате дъмпа, докато работи, по-специално ще трябва да премахнете AS integer
или AS bigint
клауза в CREATE SEQUENCE
.