如何解决“错误:˂module/extension˃ 必须通过 shared_preload_libraries 加载”错误?

1 分钟阅读
0

我有一个 Amazon Relational Database Service(Amazon RDS)for PostgreSQL 数据库实例。我想解决“错误:<module/extension> 必须通过 shared_preload_libraries 加载”错误。

简短描述

当您使用 Amazon RDS for PostgreSQL 时,可以将共享库预加载到服务器中。这样做您便可加载其他功能或获得性能优势。但是,当您使用模块/扩展时,可能会收到以下错误:

“错误:<module/extension> 必须通过 shared_preload_libraries 加载”

例如,当您查询 pg_stat_statements 时,可能会收到以下错误:

postgres=> SELECT * FROM pg_stat_statements;
ERROR:  relation "pg_stat_statements" does not exist
postgres=> CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTENSION

postgres=> SELECT * FROM pg_stat_statements;
ERROR:  pg_stat_statements must be loaded via shared_preload_libraries

要解决此错误并查询 pg_stat_statements,请在与您的数据库实例关联的自定义参数组中将 shared_preload_libraries 的值设置为 pg_stat_statements

修改自定义参数组中参数 shared_preload_libraries 的值,以便在 RDS for PostgreSQL 上使用以下模块/扩展:

  • auto_explain
  • orafce
  • pgaudit
  • pglogical
  • pg_hint_plan
  • pg_prewarm
  • pg_similarity
  • pg_stat_statements
  • pg_transport
  • plprofiler

**注意:**您可以修改自定义参数组中的参数值。您无法更改默认数据库参数组中的参数值。如果您对自定义参数组中的参数进行更改,则您的更改将应用于与该参数组关联的所有数据库实例。

解决方法

创建自定义参数组

**注意:**如果您已有自定义参数组,请跳到下一步。

  1. 登录 Amazon RDS 控制台
  2. 在导航窗格中,选择参数组
  3. 选择创建参数组
  4. 参数组系列列表中,选择一个数据库参数组系列
  5. 组名框中,输入新数据库参数组的名称。
  6. 描述框中,输入新数据库参数组的描述。
  7. 选择创建

修改自定义参数组中的参数

  1. 登录 Amazon RDS 控制台
  2. 在导航窗格中,选择参数组
  3. 在列表中,选择要修改的参数组。
  4. 对于参数组操作,选择编辑
  5. 更改参数 shared_preload_libraries 的值。
  6. 选择保存更改

**注意:**shared_preload_libraries 参数是一个静态参数。当您更改静态参数并保存数据库参数组时,参数更改将在您手动重启数据库实例后生效。

将参数组与数据库实例关联

**注意:**如果您的自定义参数组已经与数据库实例相关联,请跳到下一步。

修改您的数据库实例,以将自定义参数组与您的数据库实例关联。

重启数据库实例

**重要事项:**在更改与数据库实例关联的数据库参数组后,您必须手动重启数据库实例。在数据库实例使用新的数据库参数组之前,您必须执行此操作。

使用 Amazon RDS 控制台重启您的数据库实例。或者,您可以显式调用 RebootDBInstance API 操作(如果数据库实例处于多可用区部署中,则不进行失效转移)。

相关信息

关于 pg_stat_statements 的 PostgreSQL 文档(在 PostgreSQL 网站上)

使用参数组