无法加载库"/usr/lib/pgsql/plpgsql.so" & 未定义符号: PinPortal
我在一台运行CentOS 5的机器上使用Davical已经有一段时间了,一直没有问题。
不过昨天,我安装了Trac这个缺陷跟踪工具,结果让我不得不通过Yum进行一次全面更新,这次更新了很多软件包。
现在我搞不清楚到底出了什么问题,花了很多时间在网上搜索也没有找到什么有用的线索。
有没有人遇到过同样的问题,或者能给我一些建议,帮我更好地找出问题所在?
非常感谢!
完整的错误信息:
[2011年5月11日 17:52:53] [错误] davical: 日志: 总是: 查询: QF: SQL错误 "58P01" - 错误: 无法加载库 "/usr/lib/pgsql/plpgsql.so": /usr/lib/pgsql/plpgsql.so: 未定义的符号: PinPortal
检查文件是否存在
[@shogun ~]# tree -a /usr/lib/pgsql/ | grep "plpgsql"
|-- plpgsql.so
安装的PostgreSQL版本
[@shogun ~]# pg_config | grep "VERSION"
版本 = PostgreSQL 8.1.23
[@shogun postgresql-8.3.8]# yum list installed | grep 'post'
postgresql.i386 8.1.23-1.el5_6.1 已安装
postgresql-devel.i386 8.1.23-1.el5_6.1 已安装
postgresql-libs.i386 8.1.23-1.el5_6.1 已安装
postgresql-python.i386 8.1.23-1.el5_6.1 已安装
postgresql-server.i386 8.1.23-1.el5_6.1 已安装
1 个回答
我之前也遇到过这个问题,不过那时是8.4版本,而不是8.1,但我觉得问题是一样的。
最近对PostgreSQL所有支持的维护版本进行了一次小升级,新增了一个叫PinPortal
的功能,并让PL/pgSQL使用它。所以如果你用的是新版本的plpgsql.so
,但服务器却是旧版本的,就会出现这个错误。在你的情况下,这个变化发生在8.1.21和8.1.22之间。即使你安装的所有包都显示是新版本,你也需要重启服务器,才能确保真的在使用新版本。
问题在于,一旦你安装了新的PL/pgSQL,它会在下一个会话中被使用,但新的服务器程序在你重启服务器之前是不会被用到的。所以如果你的升级过程没有立即重启服务器,一旦有东西尝试使用PL/pgSQL,就一定会出现这些错误。如果这真的是问题所在,你可能需要检查一下为什么你的服务器没有重启。