PostgreSQL 致命错误:无法访问文件 "pg_stat_statements":没有这样的文件或目录
PostgreSQL FATAL: could not access file "pg_stat_statements": No such file or directory
我们的 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"?
当我检查状态时似乎没问题:
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)
我尝试重启服务器
service postgresql restart
在日志文件中我有
FATAL: could not access file "pg_stat_statements": No such file or directory
我已经尝试找到解决方案。大多数答案是 pg_stat_statements 模块有问题。我检查了 /etc/postgresql/9.4/main/postgres.conf 文件,但该行被注释为:
#shared_preload_libraries = '' # (change requires restart)
据我所知,我们没有更改任何 postgres 配置文件,我们最近也没有进行任何升级或更新。预先感谢您的帮助。
最后我安装了 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
已安装包 postgresql-contrib-9.4:
apt-get install postgresql-contrib-9.4
重新启动 postgresql 服务:
service postgresql restart
我曾经遇到过同样的问题。但是后来发现原因是我是运行 psql命令"alter system set shared_preload_libraries='pg_stat_statements';",覆盖了$PGDATA路径下的PostgreSQL.auto.conf。并且,因此,当通过发出 "service postgresql start" 再次重新启动 postgesql 实例时,postmaster 进程将从 $PGDATA 下的 conf 文件 "postgreSQL.auto.conf" 中读取参数 "shared_preload_libraries" 而不是从 /etc/postgresql/10/main/postgres.conf。其中参数 = ''。所以,如果你想解决这个问题,请把postgresql.auto.conf中的参数shared_preload_libraries='pg_stat_statements'注释掉。谢谢。
我今天遇到了这个问题,我发现有两个问题阻碍了我:
- postgresql-contrib 的版本必须与 postgresql-server 的版本相匹配,但是官方 repo 可能提供不同的版本。就我而言,遵循回购 https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm
提供
postgresql-contrib.x86_64 9.2.24-1.el7_5 base
和
postgresql95-server.x86_64 9.5.16-1PGDG.rhel7 @pgdg95
如您所见,版本不匹配。我在 https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/ 找到了正确的 postgresql-contrib:9.5.16 版本
如果您找不到合适的版本,您可以自己构建它:
https://www.postgresql.org/docs/current/contrib.html
- 我必须在安装 postgresql95-server 之前安装 postgresql-contrib。在 https://github.com/sous-chefs/postgresql/pull/241 处报告了一个缺陷
对于第二个问题,我找不到更好的解决方法。
我解决了安装问题
postgresql11-contrib-11.7-1PGDG.rhel8
注意 RHEL8/CentOS/Fedora 的官方(pgdg11 回购)RPM 在数据包名称中有版本(即 11):
postgresql11-contrib
P.S Yum 还安装了依赖项:perl-Carp-1.42-396.el8.noarch perl-Exporter-5.72-396.el8.noarch perl-libs-4:5.26.3-416.el8
我们的 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"?
当我检查状态时似乎没问题:
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)
我尝试重启服务器
service postgresql restart
在日志文件中我有
FATAL: could not access file "pg_stat_statements": No such file or directory
我已经尝试找到解决方案。大多数答案是 pg_stat_statements 模块有问题。我检查了 /etc/postgresql/9.4/main/postgres.conf 文件,但该行被注释为:
#shared_preload_libraries = '' # (change requires restart)
据我所知,我们没有更改任何 postgres 配置文件,我们最近也没有进行任何升级或更新。预先感谢您的帮助。
最后我安装了 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
已安装包 postgresql-contrib-9.4:
apt-get install postgresql-contrib-9.4
重新启动 postgresql 服务:
service postgresql restart
我曾经遇到过同样的问题。但是后来发现原因是我是运行 psql命令"alter system set shared_preload_libraries='pg_stat_statements';",覆盖了$PGDATA路径下的PostgreSQL.auto.conf。并且,因此,当通过发出 "service postgresql start" 再次重新启动 postgesql 实例时,postmaster 进程将从 $PGDATA 下的 conf 文件 "postgreSQL.auto.conf" 中读取参数 "shared_preload_libraries" 而不是从 /etc/postgresql/10/main/postgres.conf。其中参数 = ''。所以,如果你想解决这个问题,请把postgresql.auto.conf中的参数shared_preload_libraries='pg_stat_statements'注释掉。谢谢。
我今天遇到了这个问题,我发现有两个问题阻碍了我:
- postgresql-contrib 的版本必须与 postgresql-server 的版本相匹配,但是官方 repo 可能提供不同的版本。就我而言,遵循回购 https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm 提供
postgresql-contrib.x86_64 9.2.24-1.el7_5 base
和
postgresql95-server.x86_64 9.5.16-1PGDG.rhel7 @pgdg95
如您所见,版本不匹配。我在 https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/ 找到了正确的 postgresql-contrib:9.5.16 版本 如果您找不到合适的版本,您可以自己构建它: https://www.postgresql.org/docs/current/contrib.html
- 我必须在安装 postgresql95-server 之前安装 postgresql-contrib。在 https://github.com/sous-chefs/postgresql/pull/241 处报告了一个缺陷 对于第二个问题,我找不到更好的解决方法。
我解决了安装问题
postgresql11-contrib-11.7-1PGDG.rhel8
注意 RHEL8/CentOS/Fedora 的官方(pgdg11 回购)RPM 在数据包名称中有版本(即 11):
postgresql11-contrib
P.S Yum 还安装了依赖项:perl-Carp-1.42-396.el8.noarch perl-Exporter-5.72-396.el8.noarch perl-libs-4:5.26.3-416.el8