2011-05-13 13 views
5

He estado corriendo davical en una caja de CentOS 5 desde hace un tiempo, sin problemas. Sin embargoNo se pudo cargar la biblioteca "/usr/lib/pgsql/plpgsql.so" y el símbolo no definido: PinPortal

Ayer, he instalado Trac de seguimiento de fallos que con el tiempo me obligó a ejecutar una actualización completa a través de Yum, que actualiza todo un montón de paquetes.

Me parece que no puede saber exactamente cuál es el problema y no parece que el tiempo pasado buscando en Google para lograr mucho en el camino de las ideas.

Alguien ha tenido el mismo problema o alguien podría indicar una manera de identificar mejor qué está pasando?

¡Muchas gracias!

completa lectura de error:

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

Comprobación para ver si existe el archivo

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

| - plpgsql.so

versión de PG instalado

[@shogun ~] # pg_config | grep "versión"

VERSION = PostgreSQL 8.1.23

[@shogun PostgreSQL-8.3.8] Lista # yum instalado | grep 'post'

postgresql.i386 8.1.23-1.el5_6.1 instalado

instalado 8.1.23-1.el5_6.1 PostgreSQL-devel.i386

postgresql-8.1 libs.i386 .23-1.el5_6.1 instalado

PostgreSQL-python.i386 8.1.23-1.el5_6.1 instalado

instalado 8.1.23-1.el5_6.1 PostgreSQL-server.i386

+0

Es la versión 8.1.23 - y para ser honesto, hubo tantos paquetes actualizados que ni siquiera me di cuenta. Yo tampoco creo que mi Yum tenga un gerente de historia, ¿hay alguna manera de averiguarlo? – Slazlaa

+0

Hmm. Solo lo he instalado a través de Yum y comprobé que solo parece haber una versión instalada: – Slazlaa

Respuesta

6

He tenido este problema antes, aunque con 8.4 en lugar de 8.1, pero el problema es el mismo, creo.

Una actualización menor reciente de todas las ramas de mantenimiento soportadas de PostgreSQL introdujo la función PinPortal en el servidor, y hace que PL/pgSQL la use. Por lo tanto, si usa un plpgsql.so de la versión más reciente con un servidor de la versión anterior, obtendrá este error. En su caso, el cambio ocurrió entre 8.1.21 y 8.1.22. E incluso si todos sus paquetes instalados muestran la versión más nueva, debe reiniciar el servidor para asegurarse de que realmente usa la versión más nueva.

El problema es que, tan pronto como instale el PL/pgSQL más nuevo, se utilizará en la próxima sesión que se inicie, pero el binario del servidor más nuevo no se utilizará hasta que reinicie el servidor. Entonces, si su proceso de actualización no reinicia el servidor inmediatamente, invariablemente obtendrá estos errores tan pronto como algo intente usar PL/pgSQL. Si esto realmente resulta ser el problema, es posible que desee revisar por qué su servidor no se reinició.

+0

Me pasó lo mismo después de una actualización reciente de MacPorts. Los nuevos paquetes postgres de MacPorts proporcionan funcionalidad de selección y carga, ejecutan los dos y quizás eliminen el servidor en ejecución, launchd reiniciará uno nuevo perfectamente perfecto. –

Cuestiones relacionadas