首先道歉,如果“端口文件不是正确的术语”,但 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”不存在