我在同一个应用程序中使用相同的Postgres数据库一个月没有任何问题,在今天随机出现此错误之前,我没有更改数据库中的任何内容。但是,今天Postgres在我尝试“rails s”时随机开始抛出此错误(运行createdb或createuser时出现相同类型的错误):
退出 /Users/Joe/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.2/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in“initialize”:无法连接到服务器:否这样的文件或目录(PG ::错误) 服务器是在本地运行还是接受 Unix域套接字“/tmp/.s.PGSQL.5432”上的连接?
真正奇怪的是,我的朋友昨天遇到了完全相同的错误(在同一个应用程序上工作),并且由他从http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/运行脚本修复了这个问题。运行脚本后,他卸载并重新安装PG gem以使一切正常。但是,他正在运行OS X Lion,我正在运行Snow Leopard,因此该脚本对我不起作用。
(1)为什么会随机开始发生以及(2)如何修复它的任何想法?
答案 0 :(得分:2)
我今天遇到了类似的问题,虽然在我的情况下postgres(通过MacOS 10.8上的自制程序安装)没有运行,但我无法启动或重启它。似乎由于崩溃僵尸阻塞了套接字,解决它我做了以下
lsof -i :5432
这显示了进程阻塞的PID,我只是用
杀了它kill -9 PID
并且postgres重新开始了。
HTH
答案 1 :(得分:1)
/tmp/.s.PGSQL.5432
套接字 - 例如/tmp/
清洁服务。:host => 'localhost'
作为PG::Connection.new()
的连接参数进行连接 - 这将避免在查找Unix套接字或文件权限问题的正确路径时出现问题。localhost
(它可能比套接字慢一点),那么您可以找到使用lsof | grep PGSQL
命令作为操作系统管理员的位置 - 例如,如果它是/var/run/postgres/.s.PGSQL.5432
- 您将使用:host => '/var/run/postres/'
。答案 2 :(得分:0)
我在启动rails时遇到了同样的错误(没有这样的文件或目录)。 使用PostgreSQL one-click installer重新安装postgres并重新启动解决了这个问题。
在我的情况下,这发生在安装Mountain Lion之后,它可能清理了tmp目录。
答案 3 :(得分:0)
我遇到了类似的错误,发现这个答案很有帮助
Repairing Postgresql after upgrading to OSX 10.7 Lion
我通过添加
来解决export PATH=/usr/local/bin:$PATH
到我的.bash_profile
答案 4 :(得分:0)
我遇到了同样的问题,当我检查server.log时,我发现它无法找到var / postgres文件夹和一些conf文件。
我这样做了,但在那种情况下我丢失了数据
$casts
这对我来说效果很好,一切恢复正常。