首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PostgreSQL致命:无法访问文件"pg_stat_statements":没有这样的文件或目录

PostgreSQL致命:无法访问文件"pg_stat_statements":没有这样的文件或目录
EN

Stack Overflow用户
提问于 2018-11-06 00:35:10
回答 2查看 7.5K关注 0票数 6

我们的postgres数据库(安装在Debian上的9.4版本)停止工作(它已经工作了几个月,没有出现任何问题)。当我尝试使用psql连接时,我得到:

代码语言:javascript
复制
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"?

当我检查状态时,它似乎是正常的:

代码语言:javascript
复制
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)

我尝试重新启动服务器

代码语言:javascript
复制
service postgresql restart

在日志文件中我得到了

代码语言:javascript
复制
FATAL:  could not access file "pg_stat_statements": No such file or directory

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

代码语言:javascript
复制
#shared_preload_libraries = ''          # (change requires restart)

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-06 02:41:24

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

添加到postgres.conf中:

代码语言:javascript
复制
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:

代码语言:javascript
复制
apt-get install postgresql-contrib-9.4

已重新启动postgresql服务:

代码语言:javascript
复制
service postgresql restart
票数 3
EN

Stack Overflow用户

发布于 2019-03-01 04:39:08

我曾经遇到过同样的问题。但后来发现原因是我正在运行psql命令"alter system set shared_preload_libraries='pg_stat_statements';",,它覆盖了$PGDATA路径下的PostgreSQL.auto.conf。因此,当通过发出"service postgresql start“来重新启动postgesql实例时,邮局主管进程将从$PGDATA下的conf文件"postgreSQL.auto.conf”中读取参数"shared_preload_libraries“,而不是从/etc/postgresql/10/main/postgres.conf中读取参数”postgreSQL.auto.conf“。其中参数= '‘。所以,如果你想解决这个问题,请在postgresql.auto.conf中注释掉参数shared_preload_libraries='pg_stat_statements‘。谢谢。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53158500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档