Pam*_*orp 91 postgresql osx-server osx-mountain-lion postgresql-9.2
我刚刚使用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"?
Run Code Online (Sandbox Code Playgroud)
当我收到错误时,我试图更改_postgres的密码.我尝试了几个命令,但得到了同样的错误.我只是重新启动了我的服务器,但没有运气.我以root身份登录以查看/ var/pgsql_socket,该文件夹为空.文件夹/ var/pgsql_socket_alt也是空的.
我在网上查了一下这个.然而,我所阅读的所有解决方案,包括Stack Overflow,都建议删除并重新安装PostgreSQL.我不知道,但这似乎不是一个合理的选择,因为Server App上的几个选项使用PostgreSQL.我联系了Apple Enterprise Support(没有协议),我被告知我的问题必须由开发人员解决,这将投入695美元.
我现在有一个网站,因为我无法重建它.此时我不知道在哪里寻求帮助.我会继续在线查看我是否能找到一些东西.但是我希望有人可以快速给我一个答案,这样我就可以重建我的数据库了.
更新:12/13/2012 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
Run Code Online (Sandbox Code Playgroud)
更新:12/13/2012 18:10 GMT-6
经过激烈的网络搜索,发现了这个视频.我能够使PostgreSQL工作并删除错误.我可以使用pgadmin和phppgadmin连接.由于纯粹的挫败感,我正要回到Lion Server.现在我不必.
小智 286
我能够将以下内容添加到我的.bash_profile中以防止出现错误:
export PGHOST=localhost
Run Code Online (Sandbox Code Playgroud)
这是因为:
如果省略主机名,psql将通过Unix域套接字连接到本地主机上的服务器,或通过TCP/IP连接到没有Unix域套接字的机器上的localhost.
你的操作系统支持Unix域套接字,但是需要的PostgreSQL的Unix套接字psql不存在,或者位于与预期不同的位置.
明确指定主机名作为localhost强制psql使用TCP/IP.设置环境变量PGHOST是实现这一目标的方法之一.它在psql的手册中有记录.
小智 34
尝试在控制台中粘贴:
$ mkdir /var/pgsql_socket/
$ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/
Run Code Online (Sandbox Code Playgroud)
Nic*_*ams 23
我能够通过简单地填写127.0.0.1来解决PostgreSQL主机地址而不是将其留空.(Django示例)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'database_name',
'USER': 'database_user',
'PASSWORD': 'pass',
'HOST': '127.0.0.1',
'PORT': '',
}
}
Run Code Online (Sandbox Code Playgroud)
小智 10
在你最喜欢的编辑器中打开'postgresql.conf'.查找变量'unix_socket_directories',它很可能如下所示:
unix_socket_directories = '/private/tmp/'
Run Code Online (Sandbox Code Playgroud)
将行更改为:
unix_socket_directories = '/var/pgsql_socket/'
Run Code Online (Sandbox Code Playgroud)
请注意,如果您希望多个目录中的套接字文件使用逗号分隔它们.
小智 7
正如其他人在评论中所提到的,这个问题的一个非常简单的解决方案是在数据库配置中声明数据库"host".添加此答案只是为了让读者更清楚一点.
例如,在Ruby on Rails应用程序中,编辑/config/database.yml:
development:
adapter: postgresql
encoding: unicode
database: database_name
pool: 5
host: localhost
Run Code Online (Sandbox Code Playgroud)
注意:添加的最后一行用于指定主机.在更新到Yosemite之前,我从不需要以这种方式指定主机.
希望这有助于某人.
干杯
小智 6
一个更简单的解决方案(感谢http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres/).我升级到postgres 9.4.就我而言,我需要做的就是(经过一天的谷歌搜索而没有成功)
gem uninstall pg
gem uninstall activerecord-postgresql-adapter
bundle install
Run Code Online (Sandbox Code Playgroud)
重启webrick,完成了!
小智 5
检查数据库的状态:
service postgresql status
Run Code Online (Sandbox Code Playgroud)
如果数据库未运行,请启动db:
sudo service postgresql start
Run Code Online (Sandbox Code Playgroud)
小智 4
你能检查一下你的 postgresql.conf 文件吗?
你的 postgres 在哪个端口上运行?
我认为它没有在端口 5432 上运行。如果不是,请将其更改为 5432
或者在终端使用时
psql -U postgres -p YOUR_PORT_NUMBER database_name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109579 次 |
| 最近记录: |