Не удалось загрузить библиотеку "/usr/lib/pgsql/plpgsql.so" и неопределенный символ: PinPortal - PullRequest
5 голосов
/ 13 мая 2011

Я уже некоторое время без проблем запускаю Davical на CentOS 5.

Вчера я установил Trac bug-tracker, который в итоге заставил меня запустить полное обновление через Yum, которое обновилоцелая куча пакетов.

Кажется, я не могу точно понять, в чем проблема, а время, потраченное на поиски в Google, похоже, не принесло большого количества идей.

Кто-нибудь имелта же проблема или кто-нибудь может указать способ лучше определить, что происходит?

Большое спасибо!

Полное считывание ошибок:

[Ср 11 мая 17:52:53 2011] [error] davical: LOG: всегда: Запрос: 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

[@сёгун ~] # pg_config |grep "VERSION"

VERSION = PostgreSQL 8.1.23

[@ shogun postgresql-8.3.8] # установлен список yum |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 Ответ

6 голосов
/ 14 мая 2011

У меня раньше была эта проблема, хотя с 8.4 вместо 8.1, но проблема та же, я считаю.

Недавнее незначительное обновление всех поддерживаемых веток обслуживания PostgreSQL ввело функцию PinPortalв сервере, и сделал PL / pgSQL использовать его.Поэтому, если вы используете plpgsql.so из более новой версии с сервером из более старой версии, вы получите эту ошибку.В вашем случае изменение произошло между 8.1.21 и 8.1.22.И даже если все ваши установленные пакеты показывают более новую версию, вам необходимо перезапустить сервер, чтобы убедиться, что вы действительно используете более новую версию.

Проблема в том, что как только вы устанавливаете более новую PL / pgSQL, онабудет использоваться к следующему сеансу, который запускается, но более новый двоичный файл сервера не будет использоваться, пока вы не перезапустите сервер.Поэтому, если ваш процесс обновления не перезапускает сервер сразу, вы обязательно получите эти ошибки, как только кто-нибудь попытается использовать PL / pgSQL.Если проблема действительно возникает, возможно, вы захотите узнать, почему ваш сервер не был перезапущен.

...