psql:符号查找错误:psql:未定义符号:PQsetErrorContextVisibility

时间:2018-09-12 20:49:13

标签: postgresql centos7 postgresql-9.2 postgres-9.6

我将postgres版本从9.2.24切换到9.6,因为我需要jsonb兼容性以及其他最新功能。我在centos 7上运行虚拟机。

我决定清除所有现有的postgres实例(由于正在逐步升级,因此几乎为空),然后安装9.6。但是,一旦进入postgres shell,当我输入psql时,会收到以下错误:

psql: symbol lookup error: psql: undefined symbol: PQsetErrorContextVisibility

我假设我需要更改psql正在寻找的路径,以便它正确连接,但是我不确定要指向哪里。

注意:ls在postgres bash 9.6 data and initdb.log中显示2个目录和1个文件。

3 个答案:

答案 0 :(得分:1)

  

psql:符号查找错误:psql:未定义符号:PQsetErrorContextVisibility

这意味着您的psql副本正在libpq.so中查找动态符号,而该符号在您的路径中没有。

您有psql的自定义编译版本吗?而且,如果是这样,则必须针对9.6提供的较新的libpq构建它。

答案 1 :(得分:0)

正因为红色的帽子SCL面对了这一点。 我逃脱了以下内容。

  

ln -s /opt/rh/rh-postgresql96/root/usr/lib64/libpq.so.rh-postgresql96-5.9 /opt/rh/rh-postgresql96/root/usr/lib64/libpq.so.5

     

ln -s /opt/rh/rh-postgresql96/root/usr/lib64/libpq.so.5 /usr/lib/libpq.so.5

对于使用SCL存储库中的软件代替外部存储库,我不会建议我最大的敌人(请参阅centos 7上的postgresql 96)。

答案 2 :(得分:0)

尝试

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<your postgres lib directory>

例如

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/ 

(将@vaotsun的评论变成答案)