Apparently 9.0 can’t pg_restore DBs that have equals signs in them...at least, such is the case with pg_restore on 9.0.18. It gets confused by the “=”, even when it’s in the --dbname argument.
To me, that seems like a bug, as there’s no reason that the --dbname argument should be interpreted as anything other than the name of a database.
Does anyone here happen to know when pg_restore offered alternative ways of specifying the database?
… and it works. Undocumented, apparently (?), but it does the job.
But, I actually have to support all the way back to 8.1, and I’m a bit leery of relying on undocumented (?) features for our backup functionality. Hopefully down the road we can just move everything to >=9.3, and peace and love will reign. :)
You can dump and load older version database from newer version clients. The dbname parsing problem you are having is on the client, not the server, so if you can arrange to take the backup with a more current client then one of the suggestions in this thread will work for you.
It would help greatly if you post full command lines and error messages...
Again, the "--dbname" argument can either be an actual database name or a "connection info" object. In the later case the "=" has a special meaning. If your database has an "=" in its name then it seems like you have to use the "connection info" definition form. Note I haven't dug into this with respect to pg_restore but that is the findings from the brief psql test I performed.