Vous n'avez pas vérifié les erreurs lors de la restauration de la base de données ; il aurait dû y en avoir quelques-uns.
Un vidage d'une table comme la vôtre ressemblera à ceci dans PostgreSQL v10 (c'est 10.3 et il semble légèrement différent dans 10.1, mais ce n'est pas pertinent dans ce cas) :
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);
Maintenant, le problème est que AS integer
a été initié à CREATE SEQUENCE
dans PostgreSQL v10, donc cette instruction échouera avec une erreur de syntaxe dans 9.6.
Quelle est la conséquence ?
-
La table est créée comme dans la première instruction.
-
La troisième instruction créant la séquence échoue.
-
Toutes les instructions suivantes qui nécessitent la séquence échoueront également.
Remarque : Il n'est pas pris en charge de rétrograder PostgeSQL avec vidage et restauration.
La solution est d'éditer manuellement le dump jusqu'à ce qu'il fonctionne, il faudra notamment supprimer le AS integer
ou AS bigint
clause dans CREATE SEQUENCE
.