Postgres随机停止工作(Rails,PGSQL.5432)

时间:2012-06-06 16:46:48

标签: ruby-on-rails postgresql

我在同一个应用程序中使用相同的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)如何修复它的任何想法?

5 个答案:

答案 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

这对我来说效果很好,一切恢复正常。