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,但我仍然有错误。 好吧。
- 在Mountain Lion上安装Simulator SDK 4.3到Xcode 4.4
- 向山狮通知中心发送通知
- 在Mac OS X Mountain Lion和Mavericks上是否有任何替代valgrind的方法来检测C / C ++应用程序的内存泄漏?
- dyld:DYLD_环境variables被忽略,因为主可执行文件(/ usr / bin / sudo)是setuid或setgid
- 为什么PDFKit / wkhtmltopdf挂起,但如果Rails应用程序被杀死,则按预期呈现PDF?
- 如何在Mac OSX Mountain Lion中升级Bash并将其设置为正确的path?
- 在Mountain Lion的Xcode 4.4中禁用消除锯齿字体