【问题标题】:What should my Postgres port file look like?我的 Postgres 端口文件应该是什么样的?
【发布时间】: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 localhostpsql -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


【解决方案1】:

“端口文件”是 PostgreSQL 正在侦听的 unix 套接字。它将在启动时创建它。停止 PostgreSQL 服务器,如果 .lock 文件还在,请删除它,重新启动 PG 并查看您的套接字是否恢复。

我很困惑为什么它实际上不存在。我以前从未听说过这种情况。

【讨论】:

  • 谢谢。我已将我的 tmp 目录的图像添加到问题中。
  • 删除了锁定文件,它工作正常。感谢您的帮助。
  • 可能是 GUI 禁止显示非文件。
【解决方案2】:

似乎阻止编辑套接字文件 .s.PGSQL.5432 的 .s.PGSQL.5432.lock 在应该被删除时被保留在原处。这意味着当 postgres 尝试启动时,它无法启动,因为锁定文件阻止它创建新的套接字,即使没有套接字可供锁定文件保护。

删除 .s.PGSQL.5432.lock 并重新启动 postgres,然后启动 (Rails) 服务器正常工作。

【讨论】:

  • 您应该接受 Richard 的正确答案,而不是发布另一个答案。同样“并重新启动 postgres,然后启动服务器”也没有任何意义。
  • @ Erwin Brandstetter Rails 和 Postgres 是两个不同的东西。我重新启动了 Postgres,然后重新启动了 Rails 服务器。
【解决方案3】:

我发现这个答案很有帮助

Repairing Postgresql after upgrading to OSX 10.7 Lion

并通过把这个解决我的错误..

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

在我的 .bash_profile 中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 2015-12-09
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    相关资源
    最近更新 更多