Non hai verificato la presenza di errori durante il ripristino del database; avrebbero dovuto essercene alcuni.
Un dump di una tabella come la tua apparirà così in PostgreSQL v10 (questo è 10.3 e sembra leggermente diverso in 10.1, ma è irrilevante in questo caso):
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);
Ora il problema è che AS integer
è stato introdotto CREATE SEQUENCE
in PostgreSQL v10, in modo che l'istruzione fallisca con un errore di sintassi in 9.6.
Qual è la conseguenza?
-
La tabella viene creata come nella prima istruzione.
-
La terza istruzione che crea la sequenza ha esito negativo.
-
Anche tutte le seguenti istruzioni che richiedono la sequenza avranno esito negativo.
Nota: Non è supportato il downgrade di PostgeSQL con dump e ripristino.
La soluzione è modificare manualmente il dump finché non funziona, in particolare dovrai rimuovere il AS integer
o AS bigint
clausola in CREATE SEQUENCE
.