4

我已经在同一个应用程序中使用同一个 Postgres 数据库一个月了,没有任何问题,在今天随机出现这个错误之前,我没有更改数据库中的任何内容。但是,今天当我尝试“rails s”时,Postgres 随机开始抛出此错误(运行 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::Error) 服务器是否在本地运行并接受 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)如何解决它的任何想法?

4

5 回答 5

2

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

lsof -i :5432

这显示了进程阻塞的PID,我只是用

kill -9 PID

并且 postgres 重新启动正常。

高温高压

于 2013-04-03T13:15:43.713 回答
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/'.
于 2012-06-08T07:19:42.103 回答
0

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

升级到 OSX 10.7 Lion 后修复 Postgresql

我通过添加解决了

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

到我的 .bash_profile

于 2013-05-30T22:59:29.107 回答
0

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

就我而言,这发生在安装 Mountain Lion 之后,它可能清理了 tmp 目录。

于 2012-07-27T21:33:31.617 回答
0

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

我这样做了,但是在那种情况下我丢失了我的数据

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

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

于 2015-05-14T09:23:03.053 回答