华为云云数据库rds通过SQL命令安装和卸载插件_云淘科技

本章节提供基于root用户的PostgreSQL插件管理方案,下列插件无需用户手动创建,其他插件均需要参考本章节内容手动创建。

auto_explain
passwordcheck
pg_profile_pro
pg_sql_history
plpgsql
wal2json
test_decoding

RDS for PostgreSQL插件是数据库级生效,并不是全局生效。因此创建插件时需要在对应的业务库上进行手动创建。

RDS for PostgreSQL 11、RDS for PostgreSQL 12和RDS for PostgreSQL 13的最新小版本,支持以root用户通过社区的方式来创建(create extension)、删除(drop extension)插件。

创建插件

root用户连接需要创建插件的数据库,执行如下SQL创建插件。

select control_extension(‘create’,’‘, ‘‘);

EXTENSION_NAME为插件名称,请参见支持的插件列表。
SCHEMA为模式名称,指定创建插件的模式位置,不指定该参数时默认为public模式。

示例如下:

创建postgis插件,创建位置为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用户连接需要创建插件的数据库,执行如下SQL删除插件。

select control_extension(‘drop’,’‘, ‘‘);

EXTENSION_NAME为插件名称,请参见支持的插件列表。
SCHEMA为模式名称,在删除插件时参数无意义,可以不指定该参数。

示例如下:

select control_extension('drop','postgis');
      control_extension      
 ----------------------------
  drop postgis successfully.
 (1 row)

常见报错

场景一

ERROR:  permission denied for function control_extension

解决方法:未使用root用户执行control_extension函数,需更改连接用户为root

场景二

ERROR:  function control_extension(unknown, unknown) is not unique

解决方法:在不指定schema时,可能存在同名函数,导致函数不唯一无法运行,可选择添加schema参数重试。

场景三

ERROR:  function control_extension(unknown, unknown) does not exist

解决方法:control_extension函数在postgres库不存在,postgres库作为RDS运维库,禁止创建插件。

父主题: 插件管理

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家