sql >> Base de Datos >  >> RDS >> PostgreSQL

Después de restaurar la serie de mi base de datos eliminada de la columna en Postgresql

No buscó errores durante la restauración de la base de datos; debería haber algunos.

Un volcado de una tabla como la suya se verá así en PostgreSQL v10 (esto es 10.3 y se ve un poco diferente en 10.1, pero eso es irrelevante en este 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);

Ahora el problema es que AS integer se presentó a CREATE SEQUENCE en PostgreSQL v10, por lo que esa declaración fallará con un error de sintaxis en 9.6.

¿Cuál es la consecuencia?

  • La tabla se crea como en la primera sentencia.

  • La tercera instrucción que crea la secuencia falla.

  • Todas las siguientes declaraciones que requieren la secuencia también fallarán.

Nota: No se admite la degradación de PostgeSQL con volcado y restauración.

La solución es editar manualmente el volcado hasta que funcione, en particular, deberá eliminar el AS integer o AS bigint cláusula en CREATE SEQUENCE .