7.2 Upgrade problems: Cannot restore from pg_dumpall
Hi,
I following INSTALL instruction, however I got error on Step 4.
I issue the follow command:
$ su - postgres
$ /usr/local/pgsql/bin/psql -d template1 -f /tmp/pg_dump.bak
Error message:
CREATE DATABASE
psql:/tmp/pg_dump.bak:473: \connect: FATAL 1: Database "chinese" does not
exist in the system catalog.
copying template1 to template0... ok
Here is the content of pg_dump.bak
471 \connect template1 postgres
472 CREATE DATABASE "Chinese" WITH TEMPLATE = template0 ENCODING = 'EUC_TW';
473 \connect Chinese postgres
Any Hints?
Regards,
Chris Lee
CREATE DATABASE
psql:/tmp/pg_dump.bak:473: \connect: FATAL 1: Database "chinese" does not
exist in the system catalog.
copying template1 to template0... okHere is the content of pg_dump.bak
471 \connect template1 postgres
472 CREATE DATABASE "Chinese" WITH TEMPLATE = template0 ENCODING =
'EUC_TW'; 473 \connect Chinese postgres
It looks like you're running into a problem with case sensitivity. I guess it
might also be a problem with pg_dump, since you used it directly. I think the
solution is to use quotation marks around the word "Chinese" in the connect
statement.
\connect Chinese postgres => \connect "Chinese" postgres
Hope it helps. I wonder what's up with pg_dump though... It seems like a bad
idea to use any capital letters for any identifiers in postgresql because
postgresql handles them so awkwardly.
Regards,
Jeff
Chris Lee <Chrislee@centurycity.com.hk> writes:
Here is the content of pg_dump.bak
471 \connect template1 postgres
472 CREATE DATABASE "Chinese" WITH TEMPLATE = template0 ENCODING = 'EUC_TW';
473 \connect Chinese postgres
Any Hints?
That last line needs to be
\connect "Chinese" postgres
This appears to be a bug in pg_dumpall --- it should quote the database
name to avoid case-folding. If you can hand-edit the dump script to
fix it, you should be okay.
regards, tom lane