Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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!

share|improve this question
Did rsync copy everything including empty directories and permissions? – Colin 't Hart Dec 4 '13 at 10:09

A message is clean - it cannot create a temp file in "base/pgsql_tmp" directory. From some reason, this directory is missing.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.