我的Postgres端口文件应该是什么样的?

时间:2012-06-22 09:18:07

标签: ruby-on-rails ruby-on-rails-3 postgresql port

首先道歉,如果'端口文件不是正确的术语',但Postgres不是我的优点之一。我试图找出这个端口文件应该是什么样子,因为它似乎从我的系统中消失了。请继续阅读以获得解释和我的(很可能不正确的)思路。

我正在使用带有rails项目的Postgres(通过postgres gem)并且它一直工作正常,直到昨天它在我更新一些HTML时停止工作。我用通常的

重新启动了我的rails服务器
  

rails s

只得到:

  

/Users/pedr/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:1161:in   `initialize':无法连接到服务器:没有这样的文件或目录   (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

tmp directory

据我了解,此文件可防止编辑丢失的端口文件。

我尝试使用Time machine找到这个丢失的文件,但似乎Time Machine没有在/ tmp目录中存储任何内容。

那么我该如何重新创建这个文件呢?它应该是什么样的?

[UPDATE]

回应@wildplasser的建议:

使用以下方法测试postgres是否正在运行:

  

ps aux | grep postgres

得到我:

  

633 0.0 0.0 2442564 392 ?? Ss 9:23 am 0:00.09 postgres:stats collector   过程632 0.0 0.0 2446480 1516 ?? 9:23 am 0:00.09 postgres:   autovacuum发射器过程631 0.0 0.0 2446348 520 ?? Ss 9:23 am   0:00.32 postgres:wal writer process 630 0.0 0.0 2446348 580 ?? SS   9:23 am 0:00.48 postgres:writer process 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 myusername 1187 0.0 0.0 2434892 540   s000 S + 10:35 am 0:00.00 grep postgres

测试Unix域套接字是否正在运行:

  

ls -l / tmp / | grep PGSQL | grep -v grep

什么都没有。

postgres是否正在监听网络协议localhost?

  

psql -H localhost

得到我:

  

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

postgres是否在Unix域套接字上侦听?

  

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

得到我:

  

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我发现这个答案很有帮助

Repairing Postgresql after upgrading to OSX 10.7 Lion

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

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

在我的.bash_profile