Docker容器内升级TimescaleDB后,新数据库仍用旧版本的问题
TimescaleDB升级后新库默认旧版本的问题解决
问题原因
TimescaleDB的扩展版本是绑定到单个数据库的,PostgreSQL创建新库时默认基于template1模板库复制。你升级Docker容器后,虽然系统里已经安装了2.14.2版本的扩展,但template1里的TimescaleDB扩展还是停留在2.9.3,所以新库会继承这个旧版本。官方的Docker升级步骤只覆盖了现有业务库的升级,不会自动更新模板库的扩展版本。
解决方法
1. 更新template1模板库(一劳永逸)
修改默认模板库,让后续所有新建数据库自动使用最新版本:
-- 连接到template1库 \c template1 -- 将扩展升级到2.14.2 ALTER EXTENSION timescaledb UPDATE; -- 可选:设置该扩展的默认版本为最新,避免后续新增扩展时用旧版 ALTER EXTENSION timescaledb SET default_version TO '2.14.2';
注意:操作template1时要确保没有其他会话在使用它,要是报错有进程占用,重启PostgreSQL服务后再试就行。
2. 新建库时指定版本(临时方案)
如果不想动template1,每次建库时直接指定安装最新版本:
CREATE DATABASE new_db; \c new_db CREATE EXTENSION timescaledb VERSION '2.14.2';
或者一步到位:
CREATE DATABASE new_db; \c new_db CREATE EXTENSION timescaledb WITH VERSION '2.14.2';
内容的提问来源于stack exchange,提问作者Oldook
相关产品推荐
相关产品推荐

