postgresql – pg_upgrade无法识别的配置参数“unix_socket_directory”

我正在尝试使用此命令作为postgres用户在Fedora 18中将Postgresql从9.2升级到9.3

$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

日志中的错误

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

正如a_horse在评论中指出的那样,参数在9.3中被unix_socket_directories(复数)所取代.但是正在启动的服务器版本是旧的9.2:

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

有任何想法吗?

最佳答案
我通过运行(以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

按预期运行pg_upgrade,然后撤消hack:

mv -f /usr/bin/pg_ctl{-orig,}

转载注明原文:postgresql – pg_upgrade无法识别的配置参数“unix_socket_directory” - 代码日志