Thread: bug in pg_restore

bug in pg_restore

From
"Jeffrey W. Baker"
Date:
I think there is a little bug in pg_restore.  It says it can't restore
because the database doesn't exist, but then if I create the database it
says it can't proceed because the database DOES exist.  The solution for
me was to omit the -C argument, but it looks like a bug to me:

pg@carlito:/bigraid/tmp$ pg_restore -C -F custom -d rupert -v rupert.dump
pg_restore: connecting to database for restore
pg_restore: [archiver (db)] connection to database "rupert" failed: FATAL 1:  Database "rupert" does not exist in the
systemcatalog. 
pg_restore: *** aborted because of error
pg@carlito:/bigraid/tmp$ createdb rupert
CREATE DATABASE
pg@carlito:/bigraid/tmp$ pg_restore -C -F custom -d rupert -v rupert.dump
pg_restore: connecting to database for restore
pg_restore: creating DATABASE rupert
pg_restore: [archiver (db)] could not execute query: ERROR:  CREATE DATABASE: database "rupert" already exists
pg_restore: *** aborted because of error
pg@carlito:/bigraid/tmp$ pg_restore -F custom -d rupert -v rupert.dump
pg_restore: connecting to database for restore
pg_restore: creating SEQUENCE request_id
...


The dump file was created with the -C argument.

Regards,
Jeffrey


Re: bug in pg_restore

From
Stephan Szabo
Date:
On 18 Jan 2002, Jeffrey W. Baker wrote:

> I think there is a little bug in pg_restore.  It says it can't restore
> because the database doesn't exist, but then if I create the database it
> says it can't proceed because the database DOES exist.  The solution for
> me was to omit the -C argument, but it looks like a bug to me:

I think the intention is that with -C, the -d argument is the database
to connect to before generating the create for the database that's
specified in the dump, not the final name of the database.



Re: bug in pg_restore

From
Tom Lane
Date:
Stephan Szabo <sszabo@megazone23.bigpanda.com> writes:
> On 18 Jan 2002, Jeffrey W. Baker wrote:
>> I think there is a little bug in pg_restore.  It says it can't restore
>> because the database doesn't exist, but then if I create the database it
>> says it can't proceed because the database DOES exist.  The solution for
>> me was to omit the -C argument, but it looks like a bug to me:

> I think the intention is that with -C, the -d argument is the database
> to connect to before generating the create for the database that's
> specified in the dump, not the final name of the database.

Yeah.  The 7.1 documentation is very confusing on this point.
I tried awhile ago to clean it up for 7.2.  You might care to look at
http://developer.postgresql.org/docs/postgres/app-pgdump.html
http://developer.postgresql.org/docs/postgres/app-pgrestore.html
(there might be some stuff in there that's new for 7.2, but these
switches didn't change).

            regards, tom lane