cannot dump structures
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.
=?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
< 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
=?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