PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

След възстановяване на моята база данни серийният номер е премахнат от колоната в Postgresql

Не сте проверили за грешки по време на възстановяване на базата данни; трябваше да има няколко.

Дъмп на таблица като вашата ще изглежда така в PostgreSQL v10 (това е 10.3 и изглежда малко по-различно в 10.1, но това е без значение за този случай):

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

Сега проблемът е, че AS integer беше въведен в CREATE SEQUENCE в PostgreSQL v10, така че този израз ще се провали със синтактична грешка в 9.6.

Каква е последицата?

  • Таблицата се създава както в първия израз.

  • Третият израз, създаващ последователността, е неуспешен.

  • Всички следващи изрази, които изискват последователността, също ще се провалят.

Забележка: Не се поддържа понижаване на PostgeSQL с dump и възстановяване.

Решението е ръчно да редактирате дъмпа, докато работи, по-специално ще трябва да премахнете AS integer или AS bigint клауза в CREATE SEQUENCE .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. COPY с динамично име на файл

  2. Как работи функцията Ln() в PostgreSQL

  3. Показване на избраните резултати вертикално в psql, както се прави от \G на MySQL

  4. PostgreSQL CASE ... END с множество условия

  5. Сравнителни показатели за PostgreSQL Meltdown