如何解決「ERROR:<module/extension> 必須透過 shared_preload_libraries 載入」錯誤?

2 分的閱讀內容
0

我有一個用於 PostgreSQL DB 執行個體的 Amazon Relational Database Service (Amazon RDS)。我想解決錯誤「ERROR:<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,請在與 DB 執行個體相關聯的自訂參數群組中,將 shared_preload_libraries 的值設定為 pg_stat_statements

修改自訂參數群組中 shared_preload_libraries 的參數值,以便在適用於 PostgreSQL 的 RDS 上使用下列模組/擴充功能:

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

**注意:**您可以修改自訂參數群組中的參數值。您無法變更預設 DB 參數群組中的參數值。如果您變更自訂參數群組中的參數,則您的變更會套用至與該參數群組相關聯的所有 DB 執行個體。

解決方法

建立自訂參數群組

**注意:**如果您已有自訂參數群組,請跳至下一個步驟。

  1. 登入 Amazon RDS 主控台
  2. 在導覽窗格中,選擇參數群組
  3. 選擇建立參數群組
  4. 參數群組系列清單中,選取 DB 參數群組系列
  5. 群組名稱方塊中,輸入新 DB 參數群組的名稱。
  6. 描述方塊中,輸入新 DB 參數群組的描述。
  7. 選擇建立

修改自訂參數群組中的參數

  1. 登入 Amazon RDS 主控台
  2. 在導覽窗格中,選擇參數群組
  3. 在清單中,選擇要修改的參數群組。
  4. 參數群組動作中,選擇編輯
  5. 變更 shared_preload_libraries 參數的值。
  6. 選擇儲存變更

注意:** shared_preload_libraries** 參數是靜態參數。當您變更靜態參數並儲存 DB 參數群組時,參數變更會在您手動重新啟動 DB 執行個體後生效。

將參數群組與 DB 執行個體建立關聯

**注意:**如果您的自訂參數群組已與 DB 執行個體相關聯,請跳至下一個步驟。

修改 DB 執行個體,將自訂參數群組與 DB 執行個體建立關聯。

重啟 DB 執行個體

**重要事項:**變更與 DB 執行個體關聯的 DB 參數群組後,您必須手動重新啟動 DB 執行個體。在 DB 執行個體使用新的 DB 參數群組之前,您必須執行此操作。

使用 Amazon RDS 主控台重新啟動 DB 執行個體。或者,您可以明確呼叫 RebootDBInstance API 作業 (如果 DB 執行個體位於多可用區部署中,則不含容故障移轉)。

相關資訊

pg_stat_statements 的 PostgreSQL 文件 (在 PostgreSQL 網站上)

處理參數群組