You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS RDS PostgreSQL升级后无法更新pg_cron与pgaudit扩展求助

问题描述

已将AWS RDS上的PostgreSQL 12.17版本升级至16.1版本,尝试升级pg_cron和pgaudit扩展时持续报错,相关执行信息如下:

postgres=> select version();
                                                 version
---------------------------------------------------------------------------------------------------------
 PostgreSQL 16.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-12), 64-bit
(1 row)

postgres=> select * from pg_extension;
  oid  | extname | extowner | extnamespace | extrelocatable | extversion |         extconfig         | extcondition
-------+---------+----------+--------------+----------------+------------+---------------------------+---------------
 14501 | plpgsql |       10 |           11 | f              | 1.0        |                           |
 16410 | pg_cron |       10 |           11 | f              | 1.6        | {16425,16423,16447,16445} | {""}
 16413 | pgaudit |       10 |        16412 | t              | 1.4.3      |                           |
(3 rows)
postgres=> select * from pg_available_extensions where name in  ('pgaudit','pg_cron');
  name   | default_version | installed_version |             comment
---------+-----------------+-------------------+---------------------------------
 pgaudit | 16.0            | 1.4.3             | provides auditing functionality
 pg_cron | 1.6             | 1.6               | Job scheduler for PostgreSQL
(2 rows)

postgres=> ALTER EXTENSION pgaudit update to "16.0";
ERROR:  extension "pgaudit" has no update path from version "1.4.3" to version "16.0"
postgres=> ALTER EXTENSION pgaudit update to "16.0.0";
ERROR:  extension "pgaudit" has no update path from version "1.4.3" to version "16.0.0"
postgres=> ALTER EXTENSION pgaudit update to "16.0.1";
ERROR:  extension "pgaudit" has no update path from version "1.4.3" to version "16.0.1"

postgres=> ALTER EXTENSION pg_cron update to "1.6.1";
ERROR:  extension "pg_cron" has no update path from version "1.6" to version "1.6.1"
解决方案

由于跨大版本升级后,旧版扩展与新版PostgreSQL之间没有直接的升级路径,需采用卸载重装的方式完成升级,具体步骤如下:

一、升级pgaudit扩展

  1. 备份当前pgaudit的审计规则等配置信息,避免重装后丢失
  2. 卸载旧版本:
DROP EXTENSION pgaudit;
  1. 安装适配PostgreSQL 16的新版本:
CREATE EXTENSION pgaudit;
  1. 恢复之前备份的审计配置

二、升级pg_cron扩展

pg_cron关联定时任务,卸载前需先备份任务数据:

  1. 导出定时任务列表作为备份:
SELECT * FROM cron.job;

将查询结果保存到本地
2. 卸载旧版本:

DROP EXTENSION pg_cron;
  1. 安装适配PostgreSQL 16的新版本:
CREATE EXTENSION pg_cron;
  1. 根据备份的任务信息,重新创建所有定时任务

注意事项

  • 操作前务必创建RDS实例快照,防止操作失误导致数据丢失
  • 卸载重装会短暂中断相关功能,建议在业务低峰期执行
  • pg_cron卸载后原有任务会被彻底清除,必须提前备份再重建

内容的提问来源于stack exchange,提问作者nmakb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 06:17:07