sql >> Databasteknik >  >> RDS >> PostgreSQL

Efter att ha återställt min databasserie borttagen från kolumnen i Postgresql

Du kollade inte efter fel under återställningen av databasen; det borde ha varit några.

En dumpning av en tabell som din kommer att se ut så här i PostgreSQL v10 (detta är 10.3 och det ser något annorlunda ut i 10.1, men det är irrelevant i det här fallet):

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 är problemet att AS integer introducerades till CREATE SEQUENCE i PostgreSQL v10, så att satsen misslyckas med ett syntaxfel i 9.6.

Vad är konsekvensen?

  • Tabellen skapas som i den första satsen.

  • Den tredje satsen som skapar sekvensen misslyckas.

  • Alla följande satser som kräver sekvensen kommer också att misslyckas.

Obs! Det stöds inte att nedgradera PostgeSQL med dump och återställning.

Lösningen är att manuellt redigera dumpen tills den fungerar, i synnerhet måste du ta bort AS integer eller AS bigint sats i CREATE SEQUENCE .




  1. Hur SECOND() fungerar i MariaDB

  2. Myten att DROP och TRUNCATE TABLE är icke-loggade

  3. Datavisualisering i Microsoft Power BI

  4. Komma igång med Postgres 13 på Ubuntu 20.04