postgresql - 无法访问 Postgres,收到有关 “/var/run/postgresql/.s.PGSQL.5432” 的错误

标签 postgresql

我正在运行一个以 Postgres 作为后端数据库的 Django 应用程序。它工作正常。突然间,今天我看到我的数据库连接在生产服务器中被拒绝。所以我登录到我的服务器并尝试:

psql

然后它显示了这个错误:

 psql: could not connect to server: No such file or directory
 Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

上面列出的文件似乎不存在。

我检查了我的 Postgres 是否正在运行:

 /etc/init.d/postgresql status

它返回了 SUCCESS 消息。

postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Thu 2017-11-16 10:03:41 UTC; 55min ago
  Process: 4701 ExecReload=/bin/true (code=exited, status=0/SUCCESS)
  Process: 4899 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 4899 (code=exited, status=0/SUCCESS)

Nov 16 10:03:41 median systemd[1]: Starting PostgreSQL RDBMS...
Nov 16 10:03:41 median systemd[1]: Started PostgreSQL RDBMS.

不过,我还是停下来重新启动 postgres

我检查是否有任何其他 postgres 任务正在运行:

ps -ef | grep postgres

它返回:

root      5210  5117  0 10:21 pts/0    00:00:00 grep --color=auto postgres

所以没有其他的 Postgres。

我什至检查了我的 Postgres 是否被不小心删除了

dpkg -l | grep postgres

它返回了

ii  postgresql                           9.5+173ubuntu0.1                             all          object-relational SQL database (supported version)
ii  postgresql-9.5                       9.5.10-0ubuntu0.16.04                        amd64        object-relational SQL database, version 9.5 server
ii  postgresql-client-9.5                9.5.10-0ubuntu0.16.04                        amd64        front-end programs for PostgreSQL 9.5
ii  postgresql-client-common             173ubuntu0.1                                 all          manager for multiple PostgreSQL client versions
ii  postgresql-common                    173ubuntu0.1                                 all          PostgreSQL database-cluster manager
ii  postgresql-contrib-9.5               9.5.10-0ubuntu0.16.04                        amd64        additional facilities for PostgreSQL

所以没有rc代替ii,说明还没有卸载。

我已经尝试了互联网上的所有其他解决方案,但卸载了 Postgres。没有为我工作。我可能正在做一些非常愚蠢的事情。我不想卸载并丢失我的数据。

最佳答案

运行以下命令来检查您的 PostgreSQL 服务器实际运行在哪个端口上:

[root@server ~]# netstat -a | grep .s.PGSQL
unix  2      [ ACC ]     STREAM     LISTENING     2534417 /var/run/postgresql/.s.PGSQL.5432

我可以从这个输出中看到我的服务器正在监听端口 5432 并且该文件是在 /var/run/postgresql/.s.PGSQL.5432 中创建的

然后您可以更新 /etc/init.d/postgresql 以包含这些行

PGPORT=5432
export PGPORT

并更新位于数据目录中的 postgresql.conf 文件,并将端口键/值设置为 port=5432

然后重启你的 PostgreSQL 服务器

[root@server] service postgresql restart

关于postgresql - 无法访问 Postgres,收到有关 “/var/run/postgresql/.s.PGSQL.5432” 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47327479/

相关文章:

sql - 如何在 PostgreSQL 中选择具有级别的表的所有层次结构

sql - 从具有相同值的列中选择行

sql - 对 postgresql 9.6 中的列集进行总和值分组

sql - 有没有办法减少我的 SQL 查询的大小?

sql - 困难的 SQL 子查询来计算一些东西

sql - Heroku Dataclips 上的 PostgreSQL 变量

sql - 我将如何为附加报告编写 SQL?

mysql - 使用 liquibase 使用序列的数据库不可知示例

postgresql - 时间范围内的“一对多”关系完整性问题

Postgresql 嵌套选择 max(sum())