Обсуждение: cannot dump structures

Поиск
Список
Период
Сортировка

cannot dump structures

От
Martin Korous
Дата:
Hello,

I have on db server Postgresql 8.2.5
pg_dump (data and structures) works well.

I have copied pg_dum file  (and libpq.so.5) to other server, into chroot where is apache and phppgadmin. And there is
problem.Dump of structures doesnt work, onlydata OK. 

I have wrote 2 minimalistic php scripts:

1] dump only data works:
<?
putenv('PGPASSWORD=password');
$cmd = '/var/pgsql/bin/pg_dump dbname -U dbuser -h hostname -a -i';
passthru($cmd);
?>

2] dump structures doesnt work
<?
putenv('PGPASSWORD=password');
$cmd = '/var/pgsql/bin/pg_dump dbname -U username -h hostname -s -i';
passthru($cmd);
?>
and in pg_log is message:
STATEMENT:  SELECT (SELECT usename FROM pg_user WHERE usesysid = datdba) as dba, pg_encoding_to_char(encoding) as
encoding,datpath FROM pg_database WHERE datname = 'dbname' 
ERROR:  column "datpath" does not exist at character 113

I have search on google, mailing lists, forums...
I know that this message means that pg_dump is old version, but its impossible, the pg_dump binary file is from
dbserver.

DATABASE:
#/var/pgsql/bin/pg_dump --version
pg_dump (PostgreSQL) 8.2.5

WEBSERVER in CHROOT:
#chroot /usr/local/chroot/apache_phpPgAdmin /var/pgsql/bin/pg_dump --version
pg_dump (PostgreSQL) 8.2.5

linked with right library:
#chroot /usr/local/chroot/apache_phpPgAdmin /usr/local/ldd /var/pgsql/bin/pg_dump
        libpq.so.5 => /var/pgsql/lib/libpq.so.5 (0xb7f3c000)

pg_dump on dbserver works.
same binary file on other server doesnt work.
How is it possible please?

Btw. old pg_dump for old postgresql(7.4.7) works well.

Re: cannot dump structures

От
Tom Lane
Дата:
=?us-ascii?Q?Martin=20Korous?= <Mortals@seznam.cz> writes:
> and in pg_log is message:
> STATEMENT:  SELECT (SELECT usename FROM pg_user WHERE usesysid = datdba) as dba, pg_encoding_to_char(encoding) as
encoding,datpath FROM pg_database WHERE datname = 'dbname' 
> ERROR:  column "datpath" does not exist at character 113

You're running a 7.something pg_dump against an 8.something server.
This will not work because that pg_dump doesn't know about 8.x
catalog layout.

My advice is never, never, never use the -i option to pg_dump.
It is generally only useful for shooting yourself in the foot,
as is happening here.

> I know that this message means that pg_dump is old version, but its impossible, the pg_dump binary file is from
dbserver.

You need to reconsider "impossible".  Maybe your search path
isn't what you think it is.

            regards, tom lane

Re: [GENERAL] cannot dump structures

От
Martin Korous
Дата:
<  You're running a 7.something pg_dump against an 8.something server.
<  This will not work because that pg_dump doesn't know about 8.x
<  catalog layout.

its standard answer for message `ERROR:  column "datpath"....`
but I wrote:

DATABASE:
#/var/pgsql/bin/pg_dump --version
pg_dump (PostgreSQL) 8.2.5

and

WEBSERVER in CHROOT:
#chroot /usr/local/chroot/apache_phpPgAdmin /var/pgsql/bin/pg_dump --version
pg_dump (PostgreSQL) 8.2.5

<  My advice is never, never, never use the -i option to pg_dump.
<  It is generally only useful for shooting yourself in the foot,
<  as is happening here.

dump only data is not good too, works only with -i

<  You need to reconsider "impossible".  Maybe your search path
<  isn't what you think it is.

I dont use search path, i wrote absolute path:
$cmd = '/var/pgsql/bin/pg_dump dbname -U username -h hostname -s -i';

pg_dump out of chroot work
in chroot doesnt work...mystery

regards
Martin Korous


Re: Re: [GENERAL] cannot dump structures

От
Tom Lane
Дата:
=?us-ascii?Q?Martin=20Korous?= <Mortals@seznam.cz> writes:
> <  You're running a 7.something pg_dump against an 8.something server.
> <  This will not work because that pg_dump doesn't know about 8.x
> <  catalog layout.

> its standard answer for message `ERROR:  column "datpath"....`
> but I wrote:

> DATABASE:
> #/var/pgsql/bin/pg_dump --version
> pg_dump (PostgreSQL) 8.2.5

A look at the source code is sufficient to prove that the string
"datpath" occurs nowhere in 8.2 pg_dump (nor indeed in any 8.x version).
Therefore, you are running pg_dump 7.x, whether you believe it or not.
The error message you'd get if you removed the -i switch would provide
further proof, if you require it.

> pg_dump out of chroot work
> in chroot doesnt work...mystery

Doesn't sound very mysterious to me.  You've got an old copy of pg_dump
somewhere inside the chroot, and perhaps a PATH setting different from
what you think it is.

            regards, tom lane