我刚刚使用OS X Server将我的MacMini服务器从Lion Server升级到Mountain Lion。但是,我遇到了与去年首次安装Lion Server时相同的PostgreSQL问题。
当我尝试执行任何类型的PostgreSQL终端命令时,我会收到以下臭名昭著的错误消息,许多人多年来都遇到过:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
当我尝试更改_postgres的密码时,出现了错误。我尝试了几个命令,但都得到了同样的错误。我刚刚重启了我的服务器,但没有成功。我以root身份登录查看了/var/pgsql_socket文件夹,但该文件夹为空。/var/pgsql_socket_alt文件夹也为空。
我在网上查找了相关信息。然而,我读到的几乎所有解决方案,包括在Stack Overflow上的解决方案,都建议卸载并重新安装PostgreSQL。但我不知道这是否是可行的选择,因为Server App中有几个选项使用PostgreSQL。我联系了苹果企业支持(没有协议),他们告诉我我的问题必须由开发人员解决,这将需要695美元。
我的网站现在已经关闭,因为我无法重建它。我不知道该向谁寻求帮助。我将继续在网上寻找答案。但我希望有人能够快速给我一个答案,这样我就可以重建我的数据库。
更新:12/13/2012 15:33 GMT-6
以下是ps auwx | grep postg的输出:
_postgres 28123 0.0 0.1 2479696 7724 ?? Ss 3:01PM 0:00.04 /Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D /Library/Server/PostgreSQL For Server Services/Data -c listen_addresses= -c log_connections=on -c log_directory=/Library/Logs/PostgreSQL -c log_filename=PostgreSQL_Server_Services.log -c log_line_prefix=%t -c log_lock_waits=on -c log_statement=ddl -c logging_collector=on -c unix_socket_directory=/Library/Server/PostgreSQL For Server Services/Socket -c unix_socket_group=_postgres -c unix_socket_permissions=0770
server1 28216 0.0 0.0 2432768 620 s000 R+ 3:02PM 0:00.00 grep postg
_postgres 28138 0.0 0.0 2439388 752 ?? Ss 3:01PM 0:00.01 postgres: stats collector process
_postgres 28137 0.0 0.0 2479828 1968 ?? Ss 3:01PM 0:00.00 postgres: autovacuum launcher process
_postgres 28136 0.0 0.0 2479696 544 ?? Ss 3:01PM 0:00.00 postgres: wal writer process
_postgres 28135 0.0 0.0 2479696 732 ?? Ss 3:01PM 0:00.01 postgres: writer process
_postgres 28134 0.0 0.0 2479696 592 ?? Ss 3:01PM 0:00.00 postgres: checkpointer process
_postgres 28131 0.0 0.0 2439388 368 ?? Ss 3:01PM 0:00.00 postgres: logger process
更新:12/13/2012 18:10 GMT-6
经过大量的网络搜索,我找到了这个视频。我成功地让PostgreSQL工作并移除了错误。我可以使用pgadmin和phppgadmin进行连接。由于极度沮丧,我本来要回到Lion Server。现在不必了。
psql
在你自己安装的版本之前出现在了PATH
中。它们寻找 Unix 套接字的位置不同。要么通过指定-h localhost
使用 TCP/IP,要么最好修复你的PATH
以便先找到正确的psql
。苹果公司不仅捆绑 PostgreSQL,而且还将其搞得放置在非标准位置,这是问题的根本原因。 - Craig Ringerhomebrew
和osx
的人,@CraigRinger 可能有正确的答案,可以通过brew doctor
进行确认。 - Karthik T