无法加载库/usr/local/lib/postgresql/plpgsql.so ..未定义的符号“ MakeExpandedObjectReadOnly”

时间:2019-03-13 15:04:15

标签: postgresql freebsd dynamic-loading

我想做的就是将这个安装脚本转换为以bash编写的webodm(https://gist.github.com/lkpanganiban/5226cc8dd59cb39cdc1946259c3fea6e),以便在freenas监狱下的tcsh shell中使用。

我现在输入的部分我找不到解决方法,我希望有人能启发我下一步该怎么做。

引发问题的行是:

su - postgres -c "psql -d webodm_dev -c "\""CREATE EXTENSION postgis;"\"" "

整个错误行:

ERROR:  could not load library "/usr/local/lib/postgresql/plpgsql.so": dlopen (/usr/local/lib/postgresql/plpgsql.so) failed: /usr/local/lib/postgresql/plpgsql.so: Undefined symbol "MakeExpandedObjectReadOnly"

pkg信息给出:

postgis24-2.4.5_1              Geographic objects support for PostgreSQL databases
postgresql95-client-9.5.15_2   PostgreSQL database (client)
postgresql95-contrib-9.5.15_2  The contrib utilities from the PostgreSQL distribution
postgresql95-server-9.5.15_2   PostgreSQL is the most advanced open-source database available anywhere

是的,该文件存在:

root@webodm2:~ # ls -l /usr/local/lib/postgresql/plpgsql.so
-rwxr-xr-x  1 root  wheel  195119 Feb  7 18:16 /usr/local/lib/postgresql/plpgsql.so
root@webodm2:~ # 

所以有人有什么主意吗?

2 个答案:

答案 0 :(得分:0)

该错误消息表示您有一个来自PostgreSQL 9.5或更早版本的plpgsql.so,并尝试与PostgreSQL 9.6或更高版本一起使用。

要么您选择了错误的库,要么在附近复制了文件。

无论如何,问题与PostGIS无关。

答案 1 :(得分:0)

从postgres 11升级到12后,我遇到了这个问题,这里介绍如何在Linux和Mac(无brew)上修复它

$ sudo su postgres

$ /usr/lib/postgresql/12/bin/pg_upgrade \
  --old-datadir=/var/lib/postgresql/11/main \
  --new-datadir=/var/lib/postgresql/12/main \
  --old-bindir=/usr/lib/postgresql/11/bin \
  --new-bindir=/usr/lib/postgresql/12/bin \
  --old-options '-c config_file=/etc/postgresql/11/main/postgresql.conf' \
  --new-options '-c config_file=/etc/postgresql/12/main/postgresql.conf' \

您可以添加--check进行干式测试升级,而无需更改postgres安装中的任何内容。

对于安装了brew安装的Mac用户:

升级后,运行以下命令”

$ brew postgresql-upgrade-database