2013-06-20 4 views
1

Я хочу pg_dump мою базу данных и имею проблему, что некоторые последовательности генерируются в файле дампа, а некоторые нет.некоторые последовательности не в дампе из pg_dump

С таблицей infrastruktur_pictures он работает со столом hoehenprofile, он не работает. Вот информация о о таблицах с pgadmin3:

hoehenprofile

CREATE SEQUENCE "hoehenprofile_HID_seq" 
    INCREMENT 1 
    MINVALUE 1 
    MAXVALUE 9223372036854775807 
    START 14289 
    CACHE 1; 
ALTER TABLE "hoehenprofile_HID_seq"; 

CREATE TABLE hoehenprofile 
(
    "HID" serial NOT NULL, 
    hoehenprofil character varying(255), 
    CONSTRAINT "HID" PRIMARY KEY ("HID") 
) 
WITH (
    OIDS=FALSE 
); 
ALTER TABLE hoehenprofile ADD COLUMN "HID" integer; 
ALTER TABLE hoehenprofile ALTER COLUMN "HID" SET NOT NULL; 
ALTER TABLE hoehenprofile ALTER COLUMN "HID" SET DEFAULT nextval('"hoehenprofile_HID_seq"'::regclass); 

infrastruktur_pictures

CREATE SEQUENCE "infrastruktur_pictures_IPID_seq" 
    INCREMENT 1 
    MINVALUE 1 
    MAXVALUE 9223372036854775807 
    START 1 
    CACHE 1; 
ALTER TABLE "infrastruktur_pictures_IPID_seq"; 

CREATE TABLE infrastruktur_pictures 
(
    "IPID" serial NOT NULL, 
    picture character varying(255) NOT NULL, 
    picture_text text, 
    fotograf text, 
    CONSTRAINT prim PRIMARY KEY ("IPID") 
) 
WITH (
    OIDS=FALSE 
); 
ALTER TABLE infrastruktur_pictures ADD COLUMN "IPID" integer; 
ALTER TABLE infrastruktur_pictures ALTER COLUMN "IPID" SET NOT NULL; 
ALTER TABLE infrastruktur_pictures ALTER COLUMN "IPID" SET DEFAULT nextval('"infrastruktur_pictures_IPID_seq"'::regclass); 

В файл дампа сгенерированный код для hoehenprofile выглядит следующим образом (никакая последовательность не генерируется):

-- 
-- TOC entry 145 (class 1259 OID 67719) 
-- Name: hoehenprofile; Type: TABLE; Schema: public; Owner: -; Tablespace: 
-- 

CREATE TABLE hoehenprofile (
    "HID" integer DEFAULT nextval('"hoehenprofile_HID_seq"'::regclass) NOT NULL, 
    hoehenprofil character varying(255) 
); 

Код для infrastruktur_pictures выглядит так: это:

- 
-- TOC entry 152 (class 1259 OID 67750) 
-- Name: infrastruktur_pictures; Type: TABLE; Schema: public; Owner: -; Tablespace: 
-- 

CREATE TABLE infrastruktur_pictures (
    "IPID" integer NOT NULL, 
    picture character varying(255) NOT NULL, 
    picture_text text, 
    fotograf text 
); 


-- 
-- TOC entry 4230 (class 0 OID 0) 
-- Dependencies: 152 
-- Name: TABLE infrastruktur_pictures; Type: COMMENT; Schema: public; Owner: - 
-- 

COMMENT ON TABLE infrastruktur_pictures IS 'Bilder im Infrastruktur Bereich des Backends'; 


-- 
-- TOC entry 153 (class 1259 OID 67756) 
-- Name: infrastruktur_pictures_IPID_seq; Type: SEQUENCE; Schema: public; Owner: - 
-- 

CREATE SEQUENCE "infrastruktur_pictures_IPID_seq" 
    INCREMENT BY 1 
    NO MINVALUE 
    NO MAXVALUE 
    CACHE 1; 


-- 
-- TOC entry 4231 (class 0 OID 0) 
-- Dependencies: 153 
-- Name: infrastruktur_pictures_IPID_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - 
-- 

ALTER SEQUENCE "infrastruktur_pictures_IPID_seq" OWNED BY infrastruktur_pictures."IPID"; 

Единственная разница между этими двумя таблицами, которые я могу видеть в pgadmin3. Когда я нажимаю на конкретный cloumn (HID, IPID) в обозревателе объектов и просматриваю свойства справа от него, я вижу, что в столбце HID атрибут последовательности не задан.

ответ

1

Разница в том, что во втором случае последовательность принадлежит таблице. Проверьте последнюю строку pg_dump.

Это связано с тем, что при создании таблицы с использованием последовательного псевдодатового типа право собственности автоматически добавляется. Но когда вы создали последовательность вручную, вы не установили «OWNED BY».