sql >> Database teknologi >  >> RDS >> PostgreSQL

Efter gendannelse af min database fjernet serien fra kolonnen i Postgresql

Du tjekkede ikke for fejl under gendannelse af databasen; der skulle have været et par stykker.

Et dump af en tabel som din vil se sådan ud i PostgreSQL v10 (dette er 10.3 og det ser lidt anderledes ud i 10.1, men det er irrelevant i dette tilfælde):

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);

Nu er problemet, at AS integer blev introduceret til CREATE SEQUENCE i PostgreSQL v10, så den sætning vil mislykkes med en syntaksfejl i 9.6.

Hvad er konsekvensen?

  • Tabellen oprettes som i den første sætning.

  • Den tredje sætning, der skaber sekvensen, mislykkes.

  • Alle følgende udsagn, der kræver sekvensen, vil også mislykkes.

Bemærk: Det er ikke understøttet at nedgradere PostgeSQL med dump og gendannelse.

Løsningen er at redigere dumpet manuelt, indtil det virker, især skal du fjerne AS integer eller AS bigint klausul i CREATE SEQUENCE .




  1. Betinget JOIN-erklæring SQL Server

  2. Oracle XML:Spring over Ikke eksisterer Node

  3. Oracle Pl/SQL:Gå gennem XMLTYPE-noder

  4. Vælg kolonner med bestemte kolonnenavne i PostgreSQL