I'm trying to upgrade Postgresql from 9.2 to 9.3 in Fedora 18 using this command as the postgres user

$ pg_upgrade -b /bin -B /usr/pgsql-9.3/bin -d /var/lib/pgsql/data -D /var/lib/pgsql/9.3/data/ -j 2 -u postgres

The error in the log

command: "/bin/pg_ctl" -w -l "pg_upgrade_server.log" -D "/var/lib/pgsql/data" -o "-p 50432 -b -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directory='/var/lib/pgsql'" start >> "pg_upgrade_server.log" 2>&1 waiting for server to start....FATAL: unrecognized configuration parameter "unix_socket_directory" .... stopped waiting pg_ctl: could not start server

As pointed by a_horse in the comments that parameter was replaced by unix_socket_directories (plural) in 9.3. But the server version being started is the old one 9.2:

$ /bin/pg_ctl --version
pg_ctl (PostgreSQL) 9.2.4

Any ideas?

I hacked the problem by running (as root):

mv /usr/bin/pg_ctl{,-orig}
echo '#!/bin/bash' > /usr/bin/pg_ctl
echo '"$0"-orig "${@/unix_socket_directory/unix_socket_directories}"' >> 
     /usr/bin/pg_ctl
chmod +x /usr/bin/pg_ctl

Run pg_upgrade as intended, then undo the hack:

mv -f /usr/bin/pg_ctl{-orig,}
  • 1
    this really allowed me to upgrade postgres 9.2 to 9.6 on Centos 7! Thanks! – sunsetjunks Dec 8 '17 at 19:17
  • 1
    Worked great for me going from 9.2 to 9.6. Thanks so much! No idea what I would have done without this answer! – SebK May 15 at 8:18
  • Worked for me too, going from 9.2 to 9.6 on Centos 7 – Gabriel Theron Jul 19 at 8:40

I've got the same problem. I was upgrading from Fedora Repo's 9.2.4 to PGDG 9.3. The source of the problem is that Fedora backports changes of parameter unix_socket_directory to unix_socket_directories (see https://bugzilla.redhat.com/show_bug.cgi?id=853353).

My solution is to rebuild the pg_upgrade from sources, with update to file contrib/pg_upgrade/server.c:199 where pg_upgrade checks for server version:

199:       (GET_MAJOR_VERSION(cluster->major_version) < 903) ?

, in my case i change it to:

199:       (GET_MAJOR_VERSION(cluster->major_version) < 900) ?

(see my patch file here).

  • Could you please explain why does this fix the issue (to the likes of myself, who are not overly familiar with the sources (beware of the understatement!))? – dezso Sep 29 '13 at 7:44
  • 3
    As per @a_horse comment above, upstream PostgreSQL have changed the parameter unix_socket_directory to unix_socket_directories in version 9.3. But the Fedora maintainer backports it to lower version. So, pg_upgrade from PGDG (PostgreSQL Global Development Group) YUM Repository expects that the 9.2.4 version accepts unix_socket_directory, but actually the 9.2.4 from Fedora YUM Repository accepts unix_socket_directories. In this case, because Fedora backports it into version 9.0 onwards, i changed it to use unix_socket_directories for version >= 9.0. – Ali Akbar Sep 29 '13 at 22:46

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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