无法加载库“/usr/lib/pgsql/plpgsql.so” &未定义的符号:PinPortal

发布于 2024-11-07 06:08:22 字数 1000 浏览 6 评论 0原文

我已经在 CentOS 5 机器上运行 Davical 一段时间了,没有出现任何问题。

然而,昨天,我安装了 Trac bug-tracker,它最终迫使我通过 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

安装的 pg 版本

[@shogun ~]# pg_config | grep "VERSION"

VERSION = PostgreSQL 8.1.23

[@shogun postgresql-8.3.8]# yum list 已安装 | grep '发布'

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 安装

I have been running Davical on a CentOS 5 box for a while now with no problems.

Yesterday however, I installed Trac bug-tracker which eventually forced me to run a full update via Yum which updated a whole heap of packages.

I cant seem to work out exactly what the issue is and time spent googling didn't seem to bring about much in the way of ideas.

Has anyone had the same problem or could anyone indicate a way to better identify whats going on?

Many Thanks!

Full Error readout :

[Wed May 11 17:52:53 2011] [error] davical: LOG: always: Query: QF: SQL error "58P01" - ERROR: could not load library "/usr/lib/pgsql/plpgsql.so": /usr/lib/pgsql/plpgsql.so: undefined symbol: PinPortal"

Checking to see if file exists

[@shogun ~]# tree -a /usr/lib/pgsql/ | grep "plpgsql"

|-- plpgsql.so

Version of pg installed

[@shogun ~]# pg_config | grep "VERSION"

VERSION = PostgreSQL 8.1.23

[@shogun postgresql-8.3.8]# yum list installed | grep 'post'

postgresql.i386 8.1.23-1.el5_6.1 installed

postgresql-devel.i386 8.1.23-1.el5_6.1 installed

postgresql-libs.i386 8.1.23-1.el5_6.1 installed

postgresql-python.i386 8.1.23-1.el5_6.1 installed

postgresql-server.i386 8.1.23-1.el5_6.1 installed

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

貪欢 2024-11-14 06:08:22

我以前也遇到过这个问题,虽然是用8.4而不是8.1,但我相信问题是一样的。

最近对 PostgreSQL 所有支持的维护分支进行了一次小升级,在服务器中引入了 PinPortal 函数,并使 PL/pgSQL 使用它。因此,如果您将新版本的 plpgsql.so 与旧版本的服务器一起使用,您将收到此错误。就您而言,更改发生在 8.1.21 到 8.1.22 之间。即使您安装的所有软件包都显示较新的版本,您也需要重新启动服务器以确保您确实使用较新的版本。

问题是,一旦您安装了较新的 PL/pgSQL,它将被启动的下一个会话使用,但在您重新启动服务器之前,较新的服务器二进制文件不会被使用。因此,如果您的升级过程没有立即重新启动服务器,那么一旦尝试使用 PL/pgSQL,您总是会收到这些错误。如果这确实是问题所在,您可能需要检查服务器未重新启动的原因。

I have had this problem before, although with 8.4 instead of 8.1, but the issue is the same, I believe.

A recent minor upgrade of all supported maintenance branches of PostgreSQL introduced the function PinPortal in the server, and made PL/pgSQL use it. So if you use a plpgsql.so from the newer version with a server from the older version, you will get this error. In your case, the change happened between 8.1.21 and 8.1.22. And even if all your installed packages show the newer version, you need to restart the server to make sure you actually use the newer version.

The problem is, as soon as you install the newer PL/pgSQL, it will get used by the next session that is started, but the newer server binary won't get used until you restart the server. So if your upgrade process doesn't restart the server immediately, you will invariably get these errors as soon as something tries to use PL/pgSQL. If this actually turns out to be the problem, you might want to review why your server wasn't restarted.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文