通過SQL命令安裝和卸載插件
本(ben)章節(jie)提供基(ji)于root用(yong)戶(hu)(hu)的PostgreSQL插(cha)(cha)件管(guan)理方案,下列插(cha)(cha)件無需用(yong)戶(hu)(hu)手(shou)動創(chuang)建,其他插(cha)(cha)件均(jun)需要參考本(ben)章節(jie)內容手(shou)動創(chuang)建。
auto_explain
passwordcheck
pg_profile_pro
pg_sql_history
plpgsql
wal2json
test_decoding
說明
RDS for PostgreSQL插件是數據庫級生效,并不是全局生效。因此創建插件時需要在對應的業務庫上進行手動創建。
RDS for PostgreSQL 11及以(yi)上版本(ben)的(de)最新(xin)小版本(ben),支持以(yi)root用戶通過社區的(de)方式來(lai)創(chuang)建(create extension)、刪(shan)除(chu)(drop extension)插件。
創建插件
以root用(yong)戶連接需(xu)要創(chuang)建(jian)插(cha)件的數據庫,執行(xing)如下(xia)SQL創(chuang)建(jian)插(cha)件。
select control_extension('create','<EXTENSION_NAME>', '<SCHEMA>');
EXTENSION_NAME為插件名(ming)稱,請參見支持的插件列(lie)表。
SCHEMA為(wei)模式名(ming)稱,指定(ding)創(chuang)建插件(jian)的模式位置,不指定(ding)該(gai)參數時默(mo)認為(wei)public模式。
示例如下:
創建(jian)postgis插(cha)件(jian),創建(jian)位置(zhi)為public schema。
-- 指定創建插件schema位置為public
select control_extension('create','postgis', 'public');
control_extension
------------------------------
create postgis successfully.
(1 row)
-- schema參數未指定時,默認schema位置為public
select control_extension('create', 'postgis');
control_extension
------------------------------
create postgis successfully.
(1 row)
刪除插件
以root用戶連接(jie)需要創建(jian)插件的數據庫,執行如下SQL刪除(chu)插件。
select control_extension('drop','<EXTENSION_NAME>', '<SCHEMA>');
EXTENSION_NAME為插件名稱,請參見支持的插件列表。
SCHEMA為模式(shi)名稱,在刪除插件(jian)時參數(shu)(shu)無意義,可以不指(zhi)定(ding)該(gai)參數(shu)(shu)。
示例如下:
select control_extension('drop','postgis');
control_extension
----------------------------
drop postgis successfully.
(1 row)
常見報錯
場景一
ERROR: permission denied for function control_extension解決方法:未使用root用戶執行control_extension函(han)數,需更改連(lian)接(jie)用戶為root。
場景二
ERROR: function control_extension(unknown, unknown) is not unique解(jie)決方法:在(zai)不(bu)指定schema時,可能存在(zai)同名函數,導致函數不(bu)唯一無(wu)法運行,可選(xuan)擇添加schema參(can)數重(zhong)試。
場景三
ERROR: function control_extension(unknown, unknown) does not exist解決方法:control_extension函數在postgres庫不存在,postgres庫作為RDS運維庫,禁止創建插件。