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

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

我今天遇到了类似的问题,虽然在我的情况下postgres(通过MacOS 10.8上的自制程序安装)没有运行但我无法启动或重新启动它。 似乎由于崩溃僵尸阻塞了套接字,解决它我做了以下

 lsof -i :5432 

这显示了进程阻塞的PID,我只是将其杀死了

 kill -9 PID 

和postgres重新开始很好。

HTH

  • 也许删除了/tmp/.s.PGSQL.5432 socket – 例如a /tmp/ cleaning服务。
  • 也许您将能够使用:host => 'localhost'作为PG::Connection.new()连接参数进行PG::Connection.new() – 它将避免在查找Unix套接字或文件权限问题的正确路径时出现问题。
  • 如果您不想使用localhost (它可能比套接字慢一点),那么您可以使用lsof | grep PGSQL找到它的位置lsof | grep PGSQL lsof | grep PGSQL命令作为操作系统管理员 – 如果是例如/var/run/postgres/.s.PGSQL.5432 – 您将使用:host => '/var/run/postres/'

启动rails时我遇到了同样的错误(没有这样的文件或目录)。 使用PostgreSQL一键式安装程序重新安装postgres并重新启动解决了问题。

在我的情况下,这发生在安装Mountain Lion之后,它可能清理了tmp目录。

我有类似的错误,发现这个答案很有帮助

升级到OSX 10.7 Lion后修复Postgresql

我通过添加解决了

 export PATH=/usr/local/bin:$PATH 

到我的.bash_profile

我遇到了同样的问题,当我检查server.log时,我发现它无法找到var / postgres文件夹和一些conf文件。

我做到了这一点,但在那种情况下我丢失了数据

 brew uninstall postgres brew install postgres initdb `brew --prefix`/var/postgres/data -E utf8`` 

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