3

首先道歉,如果“端口文件不是正确的术语”,但 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:在“初始化”中:无法连接到服务器:否这样的文件或目录 (PG::Error) \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 ?? Ss 9:23am 0:00.32 postgres: wal writer process 630 0.0 0.0 2446348 580 ?? Ss 9:23am 0:00.48 postgres: writer process 520 0.0 0.1 2446348 3640 ?? S 9:22am 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 协议 localhost?

psql -H 本地主机

得到我:

psql:致命:数据库“localhost”不存在

postgres 是否在监听 Unix 域套接字?

psql -H /tmp/.s.PGSQL.5432

得到我:

psql:致命:数据库“/tmp/.s.PGSQL.5432”不存在

4

3 回答 3

2

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

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

于 2012-06-22T09:28:26.790 回答
1

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

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

于 2012-06-22T09:58:45.923 回答
0

我发现这个答案很有帮助

升级到 OSX 10.7 Lion 后修复 Postgresql

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

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

在我的 .bash_profile

于 2013-05-30T22:56:37.050 回答