2011-05-13 63 views
5

我一直在CentOS 5盒上運行Davical一段時間沒有問題。無法加載庫「/usr/lib/pgsql/plpgsql.so」&未定義的符號:PinPortal

昨天,我安裝了Trac bug-tracker,它最終迫使我通過Yum運行一個完整的更新,它更新了整個軟件包堆。

我似乎無法確切地解決問題,並且花費在Google上的時間似乎沒有帶來太多的想法。

有沒有人有同樣的問題,或有人可以指出一種方法來更好地識別發生了什麼?

非常感謝!

完全錯誤的讀出:

[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"

檢查,看看文件是否存在

[@shogun〜]#樹-a/usr/lib目錄/ pgsql的/ | grep的 「PLPGSQL」

| - plpgsql.so皮克

版本安裝

[@shogun〜]#pg_config | grep的 「版本」

VERSION = PostgreSQL的23年8月1日

[@shogun的PostgreSQL-8.3.8]#蔭列表安裝| 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安裝

+0

它的版本是8.1.23 - 說實話,有這麼多的軟件包更新,我什至沒有注意到。我不認爲我的百勝也有歷史經理,有沒有辦法找出你知道的? – Slazlaa 2011-05-13 16:21:13

+0

嗯。我只通過百勝安裝,並通過那裏檢查,似乎只有一個版本安裝: – Slazlaa 2011-05-13 16:46:15

回答

6

我曾經遇到過這個問題,雖然用了8.4而不是8.1,但我相信問題是一樣的。

對PostgreSQL所有支持的維護分支的最近一次小升級在服務器中引入了函數PinPortal,並使PL/pgSQL使用它。所以如果你使用新版本的plpgsql.so和舊版本的服務器,你會得到這個錯誤。就你而言,變化發生在8.1.21和8.1.22之間。即使您安裝的所有軟件包都顯示了較新的版本,您仍然需要重新啓動服務器以確保實際使用較新的版本。

問題是,只要安裝了較新的PL/pgSQL,它就會在下一個啓動的會話中使用,但是較新的服務器二進制文件在您重新啓動服務器之前不會被使用。因此,如果您的升級過程不立即重新啓動服務器,只要嘗試使用PL/pgSQL,就會一直得到這些錯誤。如果事實證明這是問題所在,那麼您可能需要查看您的服務器未重新啓動的原因。

+0

最近MacPorts升級後,我也發生了同樣的事情。新的MacPorts postgres包提供選擇和加載功能,執行兩者並可能會終止正在運行的服務器,launchd將重新啓動一個完美的新服務器。 – 2011-08-25 14:37:28