Sie haben während der Wiederherstellung der Datenbank nicht nach Fehlern gesucht; es sollten ein paar gewesen sein.
Ein Dump einer Tabelle wie Ihrer sieht in PostgreSQL v10 so aus (dies ist 10.3 und sieht in 10.1 etwas anders aus, aber das ist in diesem Fall irrelevant):
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);
Jetzt ist das Problem, dass AS integer
wurde in CREATE SEQUENCE
eingeführt in PostgreSQL v10, sodass diese Anweisung in 9.6 mit einem Syntaxfehler fehlschlägt.
Was ist die Konsequenz?
-
Die Tabelle wird wie in der ersten Anweisung erstellt.
-
Die dritte Anweisung, die die Sequenz erstellt, schlägt fehl.
-
Alle folgenden Anweisungen, die die Sequenz erfordern, werden ebenfalls fehlschlagen.
Hinweis: Ein Downgrade von PostgeSQL mit Dump und Restore wird nicht unterstützt.
Die Lösung besteht darin, den Dump manuell zu bearbeiten, bis er funktioniert, insbesondere müssen Sie den AS integer
entfernen oder AS bigint
-Klausel in CREATE SEQUENCE
.