PostgreSQL 致命:无法访问文件“pg_stat_statements”:没有那个文件或目录

vit*_*tfo 5 postgresql postgresql-9.4

我们的 postgres 数据库(安装在 Debian 上的 9.4 版)停止工作(它已经工作了几个月没有问题)。当我尝试使用 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"?
Run Code Online (Sandbox Code Playgroud)

当我检查状态时,它似乎没问题:

service postgresql status
? postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)
   Active: active (exited) since Mon 2018-11-05 17:04:58 CET; 31s ago
  Process: 1367 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 1367 (code=exited, status=0/SUCCESS)
Run Code Online (Sandbox Code Playgroud)

我试图重新启动服务器

service postgresql restart
Run Code Online (Sandbox Code Playgroud)

在日志文件中我有

FATAL:  could not access file "pg_stat_statements": No such file or directory
Run Code Online (Sandbox Code Playgroud)

我试图找到解决办法。大多数答案是 pg_stat_statements 模块有问题。我检查了 /etc/postgresql/9.4/main/postgres.conf 文件,但该行被注释:

#shared_preload_libraries = ''          # (change requires restart)
Run Code Online (Sandbox Code Playgroud)

据我所知,我们没有更改任何 postgres 配置文件,最近也没有进行任何升级或更新。预先感谢您的帮助。

小智 6

我解决了安装问题

postgresql11-contrib-11.7-1PGDG.rhel8
Run Code Online (Sandbox Code Playgroud)

请注意,RHEL8/CentOS/Fedora 的官方(pgdg11 repo)RPM 在数据包名称中包含版本(即 11):

postgresql 11 -contrib

PS Yum 还安装了依赖项:perl-Carp-1.42-396.el8.noarch perl-Exporter-5.72-396.el8.noarch perl-libs-4:5.26.3-416.el8


vit*_*tfo 4

最后我安装了 pg_stat_statements 然后我就可以启动 postgresql 了。

添加到 postgres.conf:

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.track = all
pg_stat_statements.max = 10000
track_activity_query_size = 2048
Run Code Online (Sandbox Code Playgroud)

安装的软件包 postgresql-contrib-9.4:

apt-get install postgresql-contrib-9.4
Run Code Online (Sandbox Code Playgroud)

重新启动 postgresql 服务:

service postgresql restart
Run Code Online (Sandbox Code Playgroud)