【发布时间】:2012-06-24 14:07:15
【问题描述】:
如果“端口文件不是正确的术语”,首先道歉,但 Postgres 不是我的强项之一。我试图找出这个端口文件应该是什么样子,因为它似乎已经从我的系统中丢失了。请继续阅读以获取解释和我(很可能不正确)的想法。
我正在将 Postgres 与 rails 项目(通过 postgres gem)一起使用,它一直运行良好,直到昨天当我更新一些 HTML 时它停止工作。我用通常的方式重新启动了我的 Rails 服务器
铁轨
只为得到:
/Users/pedr/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:1161:in “初始化”:无法连接到服务器:没有这样的文件或目录 (PG::错误)\n \n
服务器是否在本地运行并接受连接 在 Unix 域套接字“/tmp/.s.PGSQL.5432”上?
我正在使用Lunchy 来启动和停止postgres,那里似乎没有问题。
但是我使用以下终端命令来检查 Postgres 正在侦听的端口:
sudo lsof -p 286| awk '$5 == "unix" && $NF ~ /\// { print $NF }'
它没有列出任何东西。所以我认为该端口已被某种方式删除。
我对端口的有限了解导致我在以下位置查找端口文件:
/tmp/.s.PGSQL.5432
有一个文件叫:
.s.PGSQL.5432.lock
据我了解,此文件可防止编辑丢失的端口文件。
我尝试使用 Time machine 来查找这个丢失的文件,但似乎 Time Machine 没有在 /tmp 目录中存储任何内容。
那么我怎样才能重新创建这个文件呢?它应该是什么样子?
[更新]
回应@wildplasser 的建议:
测试 postgres 是否正在运行使用:
ps 辅助 | grep postgres
得到我:
633 0.0 0.0 2442564 392 ?? Ss 9:23am 0:00.09 postgres:统计数据收集器 进程 632 0.0 0.0 2446480 1516 ?? Ss 9:23am 0:00.09 postgres: autovacuum 启动器进程 631 0.0 0.0 2446348 520 ??上午 9 点 23 分 0:00.32 postgres: wal writer 进程 630 0.0 0.0 2446348 580 ??不锈钢 上午 9:23 0:00.48 postgres:编写器进程 520 0.0 0.1 2446348 3640 ??小号 上午 9:22 0:00.33 /usr/local/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log 我的用户名 1187 0.0 0.0 2434892 540 s000 S+ 10:35am 0:00.00 grep postgres
测试Unix域套接字是否正在运行:
ls -l /tmp/ | grep PGSQL | grep -v grep
什么也得不到。
postgres 是否在本地主机上侦听 Internet 协议?
psql -H 本地主机
得到我:
psql: FATAL: 数据库“localhost”不存在
postgres 是否在监听 Unix 域套接字?
psql -H /tmp/.s.PGSQL.5432
得到我:
psql: FATAL: 数据库“/tmp/.s.PGSQL.5432”不存在
【问题讨论】:
-
通常情况下,Postgres 会同时在 localhost 上的 Internet 协议和 /tmp/.s.PGSQL.5432 上的“unix 域套接字”上进行侦听。您可以使用
psql -H localhost或psql -H /tmp/.s.PGSQL.5432轻松测试它。您为 lsof 提供的标志似乎也是错误的。要查看 PG 是否正在运行,您可以使用ps aux | grep postgres您可以通过发出ls -l /tmp/ | grep PGSQL | grep -v grep查看 unix 域套接字是否存在 -
@wildplasser 非常感谢。我已经用结果更新了问题。看起来 unix 域套接字已关闭。任何建议都非常感谢。
-
@wildplasser 删除了锁定文件,它工作正常。感谢您的帮助
-
糟糕:
-H标志应该是-h或--host我的错。 -
@wildplasser 没问题。在你给出的所有例子中都是这样吗?我会在我的问题中编辑它们,以便它们是正确的。
标签: ruby-on-rails ruby-on-rails-3 postgresql port