sql >> Database >  >> RDS >> PostgreSQL

Na het herstellen van mijn database-serie verwijderd uit de kolom in Postgresql

U heeft niet gecontroleerd op fouten tijdens het herstellen van de database; er hadden er een paar moeten zijn.

Een dump van een tabel zoals de jouwe ziet er als volgt uit in PostgreSQL v10 (dit is 10.3 en het ziet er iets anders uit in 10.1, maar dat is in dit geval niet relevant):

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

Het probleem is nu dat AS integer maakte kennis met CREATE SEQUENCE in PostgreSQL v10, dus dat statement zal mislukken met een syntaxisfout in 9.6.

Wat is het gevolg?

  • De tabel wordt gemaakt zoals in de eerste instructie.

  • De derde instructie die de reeks maakt, mislukt.

  • Alle volgende instructies die de reeks vereisen, zullen ook mislukken.

Opmerking: Het wordt niet ondersteund om PostgeSQL te downgraden met dump en restore.

De oplossing is om de dump handmatig te bewerken totdat deze werkt, in het bijzonder moet u de AS integer verwijderen of AS bigint clausule in CREATE SEQUENCE .




  1. Fix 'ERROR:kolom "colname" bestaat niet' in PostgreSQL bij gebruik van UNION, BEHALVE of INTERSECT

  2. Mijn MySQL-database is beschadigd... Wat moet ik nu doen?

  3. 5 fouten bij het ontwerpen van databases die u moet vermijden

  4. Maak de prestaties van SQL Server eenvoudig