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

我刚刚使用OS X服务器将我的MacMini服务器从Lion Server升级到Mountain Lion。 我在去年刚刚安装Lion Server时遇到了与PostgreSQL相同的问题。

当我尝试做任何types的PostgreSQLterminal命令时,我得到以下臭名昭着的错误信息,

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用户身份login到/ var / pgsql_socket文件夹是空的。 文件夹/ var / pgsql_socket_alt也是空的。

我在网上查了一下。 不过,几乎所有我读过的解决scheme,包括堆栈溢出,都build议删除并重新安装PostgreSQL。 我不知道,但这似乎不是一个合理的select,因为服务器应用程序上的几个选项使用PostgreSQL。 我联系了苹果企业支持(没有协议),我被告知我的问题将不得不由解决的开发商将投695美元。

我现在有一个网站,因为我无法重build它。 在这一点上,我不知道该去哪里寻求帮助。 我会继续在网上查看是否能find一些东西。 不过,我希望有人可以快速给我一个答案,所以我可以重build我的数据库。

更新:2012年12月13日15:33 GMT-6

这里是我的输出为ps auwwx | 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

在激烈的networkingsearch后,发现这个video。 我能够得到PostgreSQL的工作,并删除错误。 我可以使用pgadmin和phppgadmin进行连接。 我正要回到狮子服务器,因为绝望的挫折。 现在我不需要。

我能够将以下内容添加到我的.bash_profile以防止错误:

 export PGHOST=localhost 

这是因为 :

如果省略主机名,psql将通过Unix域套接字连接到本地主机上的服务器,或者通过TCP / IP连接到没有Unix域套接字的机器上的本地主机。

您的操作系统支持Unix域套接字,但是psql需要的PostgreSQL的Unix套接字不存在,或者位于与预期不同的位置。

将主机名显式指定为localhost迫使psql使用TCP / IP。 设置一个环境variablesPGHOST是实现这一目标的途径之一。 它在psql的手册中有logging 。

我能够通过简单填写PostgreSQL主机地址127.0.0.1来解决问题,而不是留下空白。 (Django示例)

 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'database_name', 'USER': 'database_user', 'PASSWORD': 'pass', 'HOST': '127.0.0.1', 'PORT': '', } } 

尝试在控制台中粘贴这个:

 $ mkdir /var/pgsql_socket/ $ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/ 

在你最喜欢的编辑器中打开“postgresql.conf”。 寻找variables'unix_socket_directories',它很可能看起来像这样:

 unix_socket_directories = '/private/tmp/' 

将此行更改为:

 unix_socket_directories = '/var/pgsql_socket/' 

请注意,如果你想在多个目录逗号分隔套接字文件。

正如其他人在评论中所提到的,这个问题的一个非常简单的解决scheme是在数据库configuration中声明数据库的“主机”。 添加这个答案只是为了让读者更清楚一点。

例如,在Ruby on Rails应用程序中,编辑/config/database.yml:

 development: adapter: postgresql encoding: unicode database: database_name pool: 5 host: localhost 

注意:添加的最后一行用于指定主机。 在更新到优胜美地之前,我从不需要用这种方式指定主机。

希望这有助于某人。

干杯

一个更简单的解决scheme(感谢http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres/ )。 我已升级到postgres 9.4。 就我而言,我只需要做一些事情(经过一天的search而不是成功)

 gem uninstall pg gem uninstall activerecord-postgresql-adapter bundle install 

重新启动webrick,完成!

你可以检查你的postgresql.conf文件吗?

你的postgres在哪个端口上运行?

我认为它不是在端口5432上运行,如果不改为5432

或在terminal使用

 psql -U postgres -p YOUR_PORT_NUMBER database_name 

如果您遇到了上述问题,但是您已经从优胜美地升级,则需要采用其他方法,因为升级解决scheme可能会损坏某些文件。 安装最新版本的OS X(Yosemite或El Capitan)后,更多的细节在`pg_tblspc`丢失 。

我有Django这个问题。

通过明确地将您的主机名设置为“localhost”来修复它。

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

我是这样做的

 dpkg-reconfigure locales 

并select您的首选语言环境

 pg_createcluster 9.5 main --start 

(9.5是我的postgresql版本)

 /etc/init.d/postgresql start 

然后它的话!

 sudo su - postgres psql 
 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"? 

我一直在得到上述错误,并没有上述解决scheme为我工作。 最后,下面的解决scheme解决了我在Mac OS X上的问题

使用brew安装postgres

 brew install postgres 

安装brew服务

 brew tap homebrew/services 

启动postgres作为后台服务

 brew services start postgresql 

要手动停止postgres

 brew services stop postgresql 

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

 brew services restart postgresql 

检查数据库的状态:

 service postgresql status 

如果数据库没有运行,启动数据库:

 sudo service postgresql start 

文件权限在Mac OS所拥有的Postgres数据库上是有限制的。 这些权限在重新启动或重新启动Postgres后重置:例如serveradmin start postgres。

所以,暂时重置权限或所有权:

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

权限重置是不安全的,所以安装一个解决scheme的数据库版本。

首先删除安装的postgres: –

sudo apt-get purge postgr *

sudo apt-get autoremove

然后安装“突触”:

sudo apt-get install synaptic

sudo apt-get update

然后安装postgres

sudo apt-get install postgresql postgresql-contrib

我花了一段时间,但终于在完成了提供的build议和其他networkingsearch之后,我终于可以做到这一点。 我使用了由Mactasia创build的以下YouTubevideo中的信息:

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

当我这样做时,我看到了.lock作为扩展名的文件。 不过,当我尝试使用PostgreSQL重新开始使用Rails应用程序时,我仍然遇到了错误。 这次我得到了一个拒绝权限的错误。 这是我记得不仅需要更改plist中的listen_addresses,而且还必须将unit_socket_permissions更改为0777.我还以root用户身份login,以更改var / pgsql_socket文件夹的权限,以便我可以在用户级别。 Postgres现在工作正常。 我正在从我的SQL备份中重新加载我的数据。

我不明白的是,当我开启了wiki时,PostgreSQL被认为是在工作,当我做了一个sudo serveradmin fullstatus postgres,但我仍然有错误。 好吧。