I'm trying to upgrade a PostgreSQL 9.2 database cluster to a 9.3 cluster on a new server.
I've copied the old 9.2 cluster (using rsync) to /srv/data/postgres
on the new server and want to convert it to a new 9.3 cluster at /srv/home/postgres/data
using:
/usr/pgsql-9.3/bin/pg_upgrade -d /srv/data/postgres/ -D /srv/home/postgres/data/ -b /usr/pgsql-9.2/bin/ -B /usr/pgsql-9.3/bin/ -u postgres --check
But I get an error:
SELECT c.oid, n.nspname, c.relname, c.relfilenode, c.reltablespace, pg_catalog.pg_tablespace_location(t.oid) AS spclocation FROM info_rels i JOIN pg_catalog.pg_class c ON i.reloid = c.oid JOIN pg_catalog.pg_namespace n ON c.relnamespace = n.oid LEFT OUTER JOIN pg_catalog.pg_tablespace t ON c.reltablespace = t.oid ORDER BY 1;
ERROR: could not create temporary file "base/pgsql_tmp/pgsql_tmp13803.0": No such file or directory
If I create an empty 9.2 cluster on the new server and run the same check, I get no errors.
Permissions seem to be the same for both the old, copied 9.2 cluster and the new initialized 9.2 test cluster (test 9.2 cluster on top; copied 9.2 cluster on bottom):
It's not clear to me what else I should try or what the problem is. Thanks!
Best Answer
A message is clean - it cannot create a temp file in "base/pgsql_tmp" directory. From some reason, this directory is missing.