Thread: pg_restore problem

pg_restore problem

From
Lonni J Friedman
Date:
Greetings,
I'm running into a wall trying to restore from a dumped database. This
database has a table with large objects, so I knew that I could not use
pg_dumpall, but rather pg_dump.  The command that I used to produce the
dump was:

pg_dump -Ft -b -o sfee > /tmp/db.tar

where sfee is the name of the database.  Once this completes, I move the
resulting db.tar file over to a different server with the same version of
PostgreSQL on it.  I first created the user & database that were identical
to the ones on the original system, and then ran this command:

pg_restore -d sfee /tmp/db.tar

It runs for a while, spitting out its progress, and then dies with the
following error:

pg_restore: [archiver (db)] could not execute query: ERROR:  Relation
"artifact_file" does not exist

My guess is that the problem is that artifact_file has not yet been
restored from the dump (its further along), however I don't understand how
to compensate for this problem.

Not sure if it matters, but this is occuring on a Redhat Linux system
running PostgreSQL-7.2.x.  Any suggestions would be gratefully accepted.

thanks!


Re: pg_restore problem

From
Tom Lane
Date:
Lonni J Friedman <lfriedman@vasoftware.com> writes:
> pg_restore: [archiver (db)] could not execute query: ERROR:  Relation
> "artifact_file" does not exist

> My guess is that the problem is that artifact_file has not yet been
> restored from the dump (its further along), however I don't understand how
> to compensate for this problem.

You need to force pg_restore to load the database objects in a safe
order.  I haven't done this recently, but basically you make a listing
of the archive's table of contents (TOC), rearrange it with a text
editor, and use that file as a control file for pg_restore.  See the
pg_restore man page.

Eventually this should be automated better :-(

            regards, tom lane