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``
这对我来说效果很好,一切恢复正常。