DBAtlas · 数据库运维图谱

查找有待更新的扩展并进行更新

PostgreSQL扩展

命令

SELECT e.extname,
       e.extversion AS installed,
       a.default_version AS available,
       n.nspname AS schema_name,
       format('ALTER EXTENSION %I UPDATE;', e.extname) AS fix
FROM pg_extension e
JOIN pg_available_extensions a ON a.name = e.extname
JOIN pg_namespace n ON n.oid = e.extnamespace
WHERE e.extversion IS DISTINCT FROM a.default_version
ORDER BY e.extname;

-- Is there an update path?
SELECT * FROM pg_extension_update_paths('pgstattuple') WHERE path IS NOT NULL;

ALTER EXTENSION pgstattuple UPDATE;

作用

比较数据库中每个扩展的已安装版本与服务器上软件包的默认版本,并为有待更新的扩展生成 ALTER EXTENSION 命令。

适用场景

在 PostgreSQL 小版本/大版本升级和扩展软件包更新之后,以及定期维护期间。

注意

升级操作系统软件包不会自动更新 SQL 侧;必须在每个数据库中分别运行 ALTER EXTENSION ... UPDATE(在 pg_upgrade 之后尤为重要)。更新脚本可能会加锁并修改对象(例如 PostGIS);请先测试并阅读发行说明。迁移到特定版本:ALTER EXTENSION pgstattuple UPDATE TO '1.5'; 部分扩展(例如 pg_stat_statements)还需要重启以重新加载共享库。

在 DBAtlas 中打开 →

相关内容