2012-06-06 121 views
3

我一直在这个相同的应用程序中使用相同的Postgres数据库一个月没有问题,并且我没有更改数据库中的任何内容,然后该错误随机出现今天起。然而,今天的Postgres随机开始抛出这个错误,当我尝试“轨道的”(我跑CREATEDB或CREATEUSER时得到相同类型的错误):Postgres刚刚随机停止工作(Rails,PGSQL.5432)

退出 /Users/Joe/.rvm/gems/ruby- 1.9.2-p290/gems/activerecord-3.2.2/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:在`initialize'中:无法连接到服务器:没有这样的文件或目录(PG :: Error) 服务器在本地运行,并在Unix域套接字“/tmp/.s.PGSQL.5432”上接受 连接?

真奇怪的是,我的朋友昨天发生了完全相同的错误(在同一个应用程序上工作),并且由他从http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/运行脚本修复。运行脚本后,他卸载并重新安装PG宝石,使所有工作。但是,他正在运行OS X Lion,而且我正在运行Snow Leopard,因此脚本不适用于我。

任何想法(1)为什么这将随机开始发生和(2)如何解决它?

+0

PostgreSQL是否正在运行?你重新启动并忘记启动它吗? –

+0

是的,它正在运行。我们通过运行'午餐开始postgres'命令进行验证,输出结果表示PosgresSQL正在运行。 –

+0

你能用'psql'连接到它吗? –

回答

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/'
+0

汤姆,我知道这是旧的答案,但我有完全相同的问题,你能告诉我如何停止链接/tmp/.s.PGSQL.5432停止在系统重新启动后被删除吗?因为现在我必须通过“sudo ln -s /tmp/.s.PGSQL.5432/var/run/postgresql/.s.PGSQL.5432” – iCyborg

+0

手动创建链接iCyborg:您无法阻止/ tmp /清除因为它可能是一个tmpfs(内存中的一个目录)。您可以将'ln -s ...'添加到'/etc/rc.d/rc.local'启动脚本中。 – Tometzky

0

我在启动rails时没有收到相同的错误(没有这样的文件或目录)。 PostgreSQL one-click installer重新安装postgres并重新启动解决了问题。

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

2

今天我有类似的问题,虽然在我的情况下postgres(通过MacOS 10.8自制软件安装)没有运行,但我无法启动或重新启动它。看来,由于碰撞僵尸挡住插座,解决它,我做了以下

lsof -i :5432 

这表明进程阻塞的PID,我只需用

kill -9 PID 

,并把它打死了postgres重新启动罚款。

HTH

0

我面临同样的问题,当我检查server.log我可以ee它无法找到var/postgres文件夹和一些conf文件。

我这样做,但是我在这种情况下

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

这对我来说,一切运作良好,恢复正常丢失了我的数据。