出现错误“无法访问文件“pg_stat_statements”:没有这样的文件或目录“

问题描述

我安装了软件包 postgresql11-contrib

$ yum list installed | grep contrib
postgresql11-contrib.x86_64     11.11-1PGDG.rhel7        @pgdg11

这是 postgres 的版本。

psql (Postgresql) 11.6

我在 postgresql.conf 中有以下条目导致错误

shared_preload_libraries = 'pg_stat_statements'         # (change requires restart)
pg_stat_statements.max = 10000
pg_stat_statements.track = all

经过一些在线搜索,我发现,我需要运行“在我选择的数据库中运行 CREATE EXTENSION pg_stat_statements”。但要做到这一点,我首先评论了上面提到的 conf 文件中的 3 行,因为我的 psql 服务器无法启动,错误 Could not access file "pg_stat_statements": No such file or directory"

https://www.oreilly.com/library/view/mastering-postgresql-11/9781789537819/a6a44124-558b-42f9-a0f3-eb52ea2799d4.xhtml

https://www.postgresql.org/docs/11/pgstatstatements.html

现在,当我执行命令 CREATE EXTENSION pg_stat_statements; 时,我看到错误“无法打开扩展控制文件“/usr/postgresql/share/extension/pg_stat_statements.control”:没有这样的文件或目录”,并在查看提到的目录,这些不是文件 pg_stat_statements.control

在这里错过了什么?请帮忙。

解决方法

您似乎在您的 Redhat/CentOS 机器上安装了两个版本的 Postgres。 您可能已经从 PGDG 存储库 (yum.postgresql.org) 以及 CentOS 7 提供的默认 postgresql 安装了 postgresql11。如果您这样做 JSONToHTML 我敢打赌您会看到 v. 11 和 v . 9.2.

只需 rpm -aq | grep postgres,这将删除 CentOS 存储库中的 v. 9.2 实例。但是,在此之前,您需要转储数据库并停止 Postgres。删除 v. 9.2 后,您需要在启动 Postgres 之前重新执行 yum erase postgresql,并重新加载您已转储的数据。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...