我有一個用於 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 執行個體。
解決方法
建立自訂參數群組
**注意:**如果您已有自訂參數群組,請跳至下一個步驟。
- 登入 Amazon RDS 主控台。
- 在導覽窗格中,選擇參數群組。
- 選擇建立參數群組。
- 在參數群組系列清單中,選取 DB 參數群組系列。
- 在群組名稱方塊中,輸入新 DB 參數群組的名稱。
- 在描述方塊中,輸入新 DB 參數群組的描述。
- 選擇建立。
修改自訂參數群組中的參數
- 登入 Amazon RDS 主控台。
- 在導覽窗格中,選擇參數群組。
- 在清單中,選擇要修改的參數群組。
- 在參數群組動作中,選擇編輯。
- 變更 shared_preload_libraries 參數的值。
- 選擇儲存變更。
注意:** 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 網站上)
處理參數群組