在宝塔的Postgre下 安装插件(扩展)时报错:

CREATE EXTENSION pg_trgm;
CREATE EXTENSION postgres_fdw;
CREATE EXTENSION mysql_fdw;
CREATE EXTENSION oracle_fdw;
CREATE EXTENSION tds_fdw;

yum repository 里添加 PostgreSQL库

接下来,我们将PostgreSQL存储库添加到CentOS 7/RHEL 7 Linux系统中

sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

错误提示1:

ERROR: could not open extension control file “/www/server/pgsql/share/extension/pg_trgm.control”: 没有那个文件或目录
ERROR: could not open extension control file “/www/server/pgsql/share/extension/postgres_fdw.control”: 没有那个文件或目录

解决方法1:

Step1. 从官方文件里复制过来,先安装 postgre-contrib,

Step2. 然后相关文件复制到宝塔的postgre安装目录里
/share/extension/,/lib/ 把两个文件里的拷贝过来

yum install -y postgresql14-contrib
awk 'BEGIN { cmd="cp -ri /usr/pgsql-14/share/extension/* /www/server/pgsql/share/extension"; print "n" |cmd; }'
awk 'BEGIN { cmd="cp -ri /usr/pgsql-14/lib/* /www/server/pgsql/lib/"; print "n" |cmd; }'

错误提示2:

ERROR: permission denied to create extension “postgres_fdw”
HINT: Must be superuser to create this extension.

或者提示:
FATAL: terminating connection due to administrator command

解决方法2:

客户端认证里临时加个所有权限, 处理完后注释掉
host all all 0.0.0.0/0 trust

解决方法2: 在本地进入数据库,安装插件

su - postgres
psql
create extension postgres_fdw;

错误提示3:

ERROR: could not access file “$libdir/postgres_fdw”: 没有那个文件或目录

解决方法3:

cp -ri /usr/pgsql-14/lib/* /www/server/pgsql/lib/
awk 'BEGIN { cmd="cp -ri /usr/pgsql-14/lib/* /www/server/pgsql/lib/"; print "n" |cmd; }'

Postgres 的多个实例(多个版本或同一版本的多个实例)?

删除安装包后宝塔上重启服务,还是不好使的话重新安装

sudo yum remove postgresql*

建议卸载,重新安装

宝塔下安装mysql_fdw方法

yum install mysql_fdw_14
awk 'BEGIN { cmd="cp -ri /usr/pgsql-14/share/extension/* /www/server/pgsql/share/extension"; print "n" |cmd; }'
awk 'BEGIN { cmd="cp -ri /usr/pgsql-14/lib/* /www/server/pgsql/lib/"; print "n" |cmd; }'

原文链接:https://centos.pkgs.org/7/postgresql-14-x86_64/mysql_fdw_14-2.6.1-2.rhel7.x86_64.rpm.html

然后重启~

宝塔下安装mysql_fdw遇到冲突

安装mysql_fdw_14的时候显示它依赖mariadb-devel
安装mariadb-devel的时候又与现有的mysql有冲突, 现有的数据库数据量也很多不能卸载后重装.
只好用Docker里安装完mysql_fdw_14后把相应地文件复制过来
记得服务器系统版本和docker的版本要一致.

  1. 创建Docker, 然后建立映射目录

在这里我是 Docker的/www文件夹和服务器的/www/docker_centos文件夹建立映射的

  1. Docker里 添加Postgre镜像源
[root@docker]$ yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
  1. 然后安装 mysql_fdw_14
[root@docker]$ yum install mysql_fdw_14

  1. 文件复制过来
[root@docker]$  mkdir /www/extension
[root@docker]$  mkdir /www/lib
[root@docker]$  awk 'BEGIN { cmd="cp -ri /usr/pgsql-14/share/extension/* /www/extension"; print "n" |cmd; }'
[root@docker]$  awk 'BEGIN { cmd="cp -ri /usr/pgsql-14/lib/* /www/lib/"; print "n" |cmd; }'
  1. 在服务器上复制文件
[postgre@server]$  awk 'BEGIN { cmd="cp -ri /www/docker_centos/extension/* /www/server/pgsql/share/extension"; print "n" |cmd; }'
[postgre@server]$  awk 'BEGIN { cmd="cp -ri /www/docker_centos/lib/* /www/server/pgsql/lib/"; print "n" |cmd; }'

重启postgre搞定

Logo

更多推荐