This is a discussion on Problem using pg_restore with -a option within the pgsql Admins forums, part of the PostgreSQL category; --> Hi all, I'm using PostgreSQL 7.4.7-6sarge2 (debian) Using the schema below, doing a pg_dump -Fc, delete all data, and ...
| |||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| Hi all, I'm using PostgreSQL 7.4.7-6sarge2 (debian) Using the schema below, doing a pg_dump -Fc, delete all data, and a pg_restore -a, the sequence of inserting data isn't correct issuing an error. Could this be a bug? Notice that on schema, table periodo depends on tipo, but the sequence is table periodo, then table tipo and after table periodo is changed to reference tipo. My schema file: drop table periodo cascade ; drop table tipo cascade ; create table periodo ( "idPeriodo" serial not null, "idTipo" int4, designacao varchar(50), constraint pk_Periodo primary key ("idPeriodo") ) ; create table tipo ( "idTipo" serial not null, tipo varchar(5), designacao varchar(50), constraint pk_Tipo primary key ("idTipo") ) ; alter table periodo add constraint fk_tipo foreign key ("idTipo") references tipo ("idTipo") ; My data on tables: INSERT INTO tipo (tipo,designacao) VALUES ('T','Type'); INSERT INTO periodo ("idTipo",designacao) VALUES (1,'periodo'); Error: pg_restore: ERROR: insert or update on table "periodo" violates foreign key constraint "fk_tipo" DETAIL: Key (idTipo)=(1) is not present in table "tipo". Best regards, Luís Sousa ---------------------------(end of broadcast)--------------------------- TIP 4: Have you searched our list archives? http://archives.postgresql.org |
| |||
| Luís Sousa wrote: > Hi all, > > I'm using PostgreSQL 7.4.7-6sarge2 (debian) > > Using the schema below, doing a pg_dump -Fc, delete all data, and a > pg_restore -a, the sequence of inserting data isn't correct issuing an > error. > Could this be a bug? Not a bug -- rather a known deficiency. pg_dump 8.0 and beyond knows how to sort stuff so that these problems do not occur, but 7.4 doesn't. The typical workaround was to use pg_restore -l/-L to generate the list of objects to restore and sort them appropiately, then do the actual restore. -- Alvaro Herrera http://www.CommandPrompt.com/ The PostgreSQL Company - Command Prompt, Inc. ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match |
| ||||
| =?ISO-8859-1?Q?Lu=EDs_Sousa?= <llsousa@ualg.pt> writes: > Using the schema below, doing a pg_dump -Fc, delete all data, and a > pg_restore -a, the sequence of inserting data isn't correct issuing an > error. Data-only restores make no attempt to avoid foreign-key constraint problems --- in general there is no solution, since you could have circular constraints. You could drop and re-add the FK constraints, or if you trust that the data is valid there's the --disable-triggers option to suppress FK constraint checking. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq |