• postgresql 数据库 timescaledb 函数time_bucket_gapfill()报错解决及更换 license


    postgresql 数据库 timescaledb 函数time_bucket_gapfill()报错解决及更换 license

    前言

    最近在工作中使用postgresql 和 timescaledb 的time_bucket_gapfill()函数 报错,让更换license,在网上找了一大圈,没有找到,最后解决了这个问题,这篇文章记录我的解决办法

    一 遇到问题:

    报错如下

    错误: function “time_bucket_gapfill” is not supported under the current “apache” license
    HINT: Upgrade your license to ‘timescale’ to use this free community feature.

    在这里插入图片描述

    二 解决办法:

    方法一: 直接改 timescaledb.license参数

    查看timescaledb.license参数命令:

    show timescaledb.license;

    修改命令:

    alter system set timescaledb.license='timescale'
    • 1

    结果不行,报错如下:

    lter system set timescaledb.license=‘timescale’;

    错误: 无法访问文件 “$libdir/timescaledb-tsl-2.5.2”: 没有那个文件或目录

    在这里插入图片描述

    那只能换包了

    方法二: 更换 timescaledb 版本(自带’timescale’ license)

    如果出现上面那种情况,那我们只能

    1.下载yum包

    先从官网上下载带 'timescale’版本的yum 包

    yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    
    • 1

    2. 更新一下本地包

    yum update timescaledb_14
    
    • 1

    下载rpm包
    yumdownloader --resolve --destdir=/u01 timescaledb-2-postgresql-14.x86_64

    下载所缺的依赖包
    yumdownloader --resolve --destdir=/u01 timescaledb-2-loader-postgresql-14.x86_64
    yumdownloader --resolve --destdir=/u01 timescaledb-tools-0.12.0-0.el7.x86_64

    3. 备份原有数据

    由于timescaledb的版本不一致,不能直接使用pg_dump 命令来备份数据库的数据

    在这里我采用单表数据进行备份的方式:

     psql --host "0.0.0.0"  --port "5432" --dbname "原数据库名"  --username "postgres" \
    -c "\COPY (SELECT * FROM 超级表名 {后面可以跟where 加限制条件}) TO /u01/data.csv DELIMITER ',' CSV"
    
    • 1
    • 2

    4. 备份原有表结构

    这里可以使用pg_dump等命令导出表结构的sql。

    5. 杀掉连接数据库的进程:

    SELECT
        pg_terminate_backend(pid)
    FROM
        pg_stat_activity
    WHERE
        -- don't kill my own connection
        pid <> pg_backend_pid()
        -- don't kill the connections to other databases
        AND datname = '原库名'
        ;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    6. 卸载原有的timescaledb

    查看
    rpm -qa |grep timescaledb

    在这里插入图片描述

    卸载

    yum remove timescaledb_14-2.6.0-1.rhel7.x86_64

    [root@AQSF-DB tjuser]# yum remove timescaledb_14-2.6.0-1.rhel7.x86_64
    Loaded plugins: fastestmirror
    Resolving Dependencies
    --> Running transaction check
    ---> Package timescaledb_14.x86_64 0:2.6.0-1.rhel7 will be erased
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =======================================================================================================================================================
     Package                                Arch                           Version                                 Repository                         Size
    =======================================================================================================================================================
    Removing:
     timescaledb_14                         x86_64                         2.6.0-1.rhel7                           installed                         8.5 M
    
    Transaction Summary
    =======================================================================================================================================================
    Remove  1 Package
    
    Installed size: 8.5 M
    Is this ok [y/N]: y
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Erasing    : timescaledb_14-2.6.0-1.rhel7.x86_64                                                                                                 1/1 
      Verifying  : timescaledb_14-2.6.0-1.rhel7.x86_64                                                                                                 1/1 
    
    Removed:
      timescaledb_14.x86_64 0:2.6.0-1.rhel7                                                                                                                
    
    Complete!
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    7. 安装timescaledb

    我这里是用最新的2.7.0版本的timescaledb,还有2个依赖包
    在这里插入图片描述

    7.1 先安装依赖包

    yum install timescaledb-2-loader-postgresql-14-2.7.0-0.el7.x86_64.rpm

    yum install timescaledb-tools-0.12.0-0.el7.x86_64.rpm

    7.2 在安装timescaledb。

    yum install timescaledb-2-postgresql-14-2.7.0-0.el7.x86_64.rpm

    8.安装插件

    1. 安装timescaledb
      CREATE EXTENSION timescaledb;

    2. 安装原本需要的插件(比如:postgis 等)

    Create extension postgis;
    Create extension “uuid-ossp”;
    Create extension “postgres_fdw”

    在这里插入图片描述

    9.还原之前的表结构

    我是有之前的表结构的sql,就直接执行了。

    10. 还原表数据

    psql --host “10.12.105.150” --port “5432” --dbname “timescaledb” --username “postgres” -c “\COPY 模式名.表名 FROM /u01/data-target.csv CSV”

    11. 验证结果

    11.1 查看license

    show timescaledb.license;
    
    • 1

    在这里插入图片描述

    11.2 查看 time_bucket_gapfill()是否报错

    在这里插入图片描述
    到这一步,咱们已经全部完成了,这个数据库的报错已经解决了。

    🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴🐴

    🌈后记

    如果本文章有何错误,请您评论中指出,或联系我,我会改正,如果您觉得这篇文章有用,请帮忙一键三连,让更多的人看见,谢谢
    作者 yang_z_1 csdn博客地址: https://blog.csdn.net/yang_z_1?type=blog

  • 相关阅读:
    SpringBoot常见注解
    为什么说做亚马逊站外引流必须有独立站着陆页
    STM32照相机实验
    苍穹外卖--员工分页查询
    Godot4实现游戏的多语言版本
    如何使用 GTX750 或 1050 显卡安装 CUDA11+
    java八股文面试[数据库]——MySQL中事务的特性
    【微服务部署】五、Jenkins+Docker一键打包部署NodeJS(Vue)项目的Docker镜像步骤详解
    C++单例的安全实现,double-check(双重检查锁定)的安全实现方法
    企望制造ERP系统RCE漏洞 复现
  • 原文地址:https://blog.csdn.net/yang_z_1/article/details/125448134