Postgresql – pg_upgrade 9.2 to 9.3 error

postgresqlpostgresql-9.2postgresql-9.3

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):

enter image description here

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.