Socket文件“/var/pgsql_socket/.s.PGSQL.5432”在Mountain Lion(OS X Server)中丢失。

98

我刚刚使用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。现在不必了。

http://www.youtube.com/watch?v=y1c7WFMMkZ4


23
你的问题归结于 Mac OS X 预安装版本的 PostgreSQL 的 psql 在你自己安装的版本之前出现在了 PATH 中。它们寻找 Unix 套接字的位置不同。要么通过指定 -h localhost 使用 TCP/IP,要么最好修复你的 PATH 以便先找到正确的 psql。苹果公司不仅捆绑 PostgreSQL,而且还将其搞得放置在非标准位置,这是问题的根本原因。 - Craig Ringer
3
在OSX中存在一个持续的问题,打包程序决定将Unix域套接字放在与正常情况不同的位置。让我搜索一下...稍等片刻...https://dev59.com/I2oy5IYBdhLWcg3wkO6g#8482546 - wildplasser
我在.bashrc中复制了一个旧的PATH。我没有安装另一个版本的postgreSQL。这是我的PATH语句,其中包括RVM代码。如果有人能告诉我要改成什么,我会去做的。当我执行which psql时,它被发现在/usr/bin/psql中。非常感谢你们所有人的帮助。我也在以root身份登录时搜索套接字文件。 - Pamela Cook - LightBe Corp
1
对于那些使用 homebrewosx 的人,@CraigRinger 可能有正确的答案,可以通过 brew doctor 进行确认。 - Karthik T
20个回答

2
我通过以下步骤在Word中制作:

dpkg-reconfigure locales

选择您喜欢的语言环境

pg_createcluster 9.5 main --start

(9.5 是我使用的 PostgreSQL 版本)

/etc/init.d/postgresql start

然后它就可以工作了!

sudo su - postgres
psql

1

请使用以下代码检查PostgreSQL服务器是否正在运行

sudo service postgresql status

如果Postgres服务器未启动,请执行以下命令。
sudo service postgresql start

1

1

Postgres数据库由Mac OS拥有,文件权限受到限制。这些权限在重启或重新启动Postgres后会被重置,例如:serveradmin start postgres。

因此,暂时重置权限或所有权:

sudo chmod o+rwx /var/pgsql_socket/.s.PGSQL.5432
sudo chown "webUser"  /var/pgsql_socket/.s.PGSQL.5432

重置权限并不安全,因此安装您拥有的数据库版本以解决问题。


1
我在电脑冻结并自动重启后遇到了这个错误。对我来说,解决方案并没有在此页面上找到,而是在另一个非常受欢迎的 SO 问题上找到了相同的错误psql: could not connect to server: No such file or directory (Mac OS X)。答案是:只需删除此文件/usr/local/var/postgres/postmaster.pid,然后运行brew services restart postgresql即可解决问题。请注意链接答案中关于在执行此操作之前终止postgres进程的警告,否则可能会永久损坏数据库。

1

首先移除已安装的PostgreSQL:

sudo apt-get purge postgr*
sudo apt-get autoremove

然后安装“synaptic”:
sudo apt-get install synaptic
sudo apt-get update

然后安装Postgres。
sudo apt-get install postgresql postgresql-contrib

1
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"?

我一直遇到上述错误,以上解决方案都没有帮助我。最终,以下解决方案在我的Mac OS X上解决了我的问题。
使用brew安装postgres。
brew install postgres

安装brew服务。
brew tap homebrew/services

将PostgreSQL作为后台服务启动

brew services start postgresql

手动停止Postgres:

brew services stop postgresql

我们也可以使用brew服务来重新启动Postgres。
brew services restart postgresql

1
apt-get install postgres-xc-client
apt-get install postgres-xc

0

我花了一些时间,但最终通过参考提供的建议和进行额外的网络搜索,我终于让它工作起来了。我使用了由Mactasia创建的以下YouTube视频中的信息:

http://www.youtube.com/watch?v=y1c7WFMMkZ4

当我这样做时,我看到了扩展名为.lock的文件。然而,当我重新开始使用PostgreSQL开发我的Rails应用程序并尝试启动Rails服务器时,我仍然遇到了错误。这一次,我遇到了权限被拒绝的错误。这时我想起来不仅要在plist中更改listen_addresses,还要将unit_socket_permissions更改为0777。我还以root身份登录以更改var/pgsql_socket文件夹的权限,这样我就可以在用户级别访问它。现在Postgres运行正常。我正在从SQL备份中重新加载数据。

我没有理解的是,当我打开wiki时,据说PostgreSQL正在工作,但当我执行sudo serveradmin fullstatus postgres时仍然遇到了错误。哦,算了。


0

我刚刚创建了一个新的集群,这对我很有效,我使用的是(PostgreSQL)9.3.20:

sudo pg_createcluster 9.3 main --start

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接