Thread: Hmmm 8.1 pg_dumpall cannot dump older db's?

Hmmm 8.1 pg_dumpall cannot dump older db's?

From
Christopher Kings-Lynne
Date:
I can't seem to dump old db's:

-bash-2.05b$ pg_dumpall -s -h database-dev > dump.sql
Password:
pg_dumpall: could not connect to database "postgres": FATAL:  database 
"postgres" does not exist

Seems that it is expecting the new 'postgres' database to exist on old 
installations?

Chris



Re: Hmmm 8.1 pg_dumpall cannot dump older db's?

From
Tom Lane
Date:
Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:
> Seems that it is expecting the new 'postgres' database to exist on old 
> installations?

Ooops :-(  Seems like maybe we want it to try postgres and then fall
back to trying template1?
        regards, tom lane


Re: Hmmm 8.1 pg_dumpall cannot dump older db's?

From
Christopher Kings-Lynne
Date:
>>Seems that it is expecting the new 'postgres' database to exist on old 
>>installations?
> 
> Ooops :-(  Seems like maybe we want it to try postgres and then fall
> back to trying template1?

No idea :)  I haven't followed the new postgres database changes 
particularly well...

Chris



Re: Hmmm 8.1 pg_dumpall cannot dump older db's?

From
Christopher Kings-Lynne
Date:
>>Seems that it is expecting the new 'postgres' database to exist on old 
>>installations?
> 
> Ooops :-(  Seems like maybe we want it to try postgres and then fall
> back to trying template1?

Actually, also ONLY assume postgres is a special database if the backend 
is 8.1 or higher.  We don't want to mess with poor people who have 
already created a database called 'postgres' in their installation of 
7.4, say...

Chris



Re: Hmmm 8.1 pg_dumpall cannot dump older db's?

From
Tom Lane
Date:
Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:
>> Ooops :-(  Seems like maybe we want it to try postgres and then fall
>> back to trying template1?

> Actually, also ONLY assume postgres is a special database if the backend 
> is 8.1 or higher.  We don't want to mess with poor people who have 
> already created a database called 'postgres' in their installation of 
> 7.4, say...

No, because it's special anyway where the dump will be reloaded.  Keep
in mind that the design assumption for pg_dump(all) is always that the
destination database will be current release or higher; frequently the
dump file won't even be parseable by older servers.

The thing that makes this slightly painful is that we can't tell what
version we are dumping *from* until we've connected, and so we cannot
automagically "do the right thing" here.  I don't really see any other
way to do it than the try-and-fallback approach.
        regards, tom lane


Re: Hmmm 8.1 pg_dumpall cannot dump older db's?

From
Bruno Wolff III
Date:
On Thu, Jul 07, 2005 at 23:44:44 -0400, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> 
> The thing that makes this slightly painful is that we can't tell what
> version we are dumping *from* until we've connected, and so we cannot
> automagically "do the right thing" here.  I don't really see any other
> way to do it than the try-and-fallback approach.

But after falling back to template1, a version check could be made and
if running 8.1 or higher an error message could be displayed.


Re: Hmmm 8.1 pg_dumpall cannot dump older db's?

From
Tom Lane
Date:
Bruno Wolff III <bruno@wolff.to> writes:
> But after falling back to template1, a version check could be made and
> if running 8.1 or higher an error message could be displayed.

Once we're connected to template1, we might as well just use it ...
        regards, tom lane


Re: Hmmm 8.1 pg_dumpall cannot dump older db's?

From
Andrew Dunstan
Date:

Tom Lane wrote:

>Bruno Wolff III <bruno@wolff.to> writes:
>  
>
>>But after falling back to template1, a version check could be made and
>>if running 8.1 or higher an error message could be displayed.
>>    
>>
>
>Once we're connected to template1, we might as well just use it ...
>
>
>  
>
Agreed. In any case, I thought that dropping the postgres database was 
supposed to be OK if you wanted to work that way. (I also thought 
fallback was the way all this was supposed to work anyway).

cheers

andrew