靛尊 发表于 2025-6-1 20:56:31

PostgreSQL13中安装test_decoding插件

test_decoding是PostgreSQL的一个逻辑解码插件,主要用于将WAL日志转换成可读的格式,方便进行逻辑复制或者数据变更捕获。常被用于配置逻辑复制或者使用类似Debezium这样的工具,用到这个插件。
问题概述

在PostgreSQL 13中安装test_decoding插件,已经安装了postgresql13-contrib包,但显示缺少test_decoding.control文件。
postgres=# CREATE EXTENSION test_decoding;
ERROR:could not open extension control file "/usr/pgsql-13/share/extension/test_decoding.control": No such file or directory
postgres=# CREATE EXTENSION test_decoding;
ERROR:could not find function "test_decoding_slot_create" in file "/usr/pgsql-13/lib/test_decoding.so"根据 rpm -ql postgresql13-contrib | grep test_decoding 的输出,系统只安装了 test_decoding.so 动态库文件,但缺少关键的 test_decoding.control 和 test_decoding--1.0.sql 文件。
$ rpm -qa |grep postgresql13-contrib
postgresql13-contrib-13.20-1PGDG.rhel7.x86_64

$ rpm -ql postgresql13-contrib | grep test_decoding
/usr/pgsql-13/lib/test_decoding.soPostgreSQL 的 test_decoding 插件需要以下文件:

[*]控制文件:test_decoding.control(位于 share/extension/)
[*]SQL脚本:test_decoding--1.0.sql(位于 share/extension/)
[*]动态库:test_decoding.so(位于 lib/)
环境中缺少前两个文件,导致无法通过 CREATE EXTENSION 启用插件。
解决方案

手动创建缺失文件

[*]直接生成 test_decoding.control 和 test_decoding--1.0.sql 文件
# 创建控制文件sudo tee /usr/pgsql-13/share/extension/test_decoding.control
页: [1]
查看完整版本: PostgreSQL13中安装test_decoding插件