3 votos

PostgreSQL está cargando la biblioteca incorrecta de PostGIS

Estoy intentando actualizar mi versión de PostgreSQL (de 9.2 a 9.6) en una Mac con 10.13.5.

Usé pg_dumpall para hacer una copia de seguridad de la base de datos 9.2 según las instrucciones en la documentación de postgres, detuve la instancia 9.2 y comencé la 9.6 y luego redirigí el archivo de respaldo a la versión 9.6 de psql.

En cuanto llega a crear las tablas, obtengo estos errores:

CREATE TYPE
psql:/Library/PostgreSQL/backups/9.2.3-dumpall:250: ERROR:  biblioteca incompatible "/Library/PostgreSQL/9.2/lib/postgis-2.0.so": incompatibilidad de versión
DETALLE:  El servidor es versión 9.6, la biblioteca es versión 9.2.

He intentado reinstalar un par de veces sin éxito.

No logro entender por qué el cargador está cargando la biblioteca 9.2 en lugar de la 9.6. He probado agregando LD_LIBRARY_PATH al entorno pero no ha hecho ninguna diferencia.

1voto

jlehenbauer Puntos 7749

Su volcado de base de datos no debe tener este tipo de cosas desde el principio. Cuando realice el volcado de la base de datos, debería colocar una sola línea dentro del volcado que diga,

CREATE EXTENSION postgis;

Esto indica a la base de datos que cargue PostGIS desde un script SQL en el directorio de extensiones. Ese script SQL tiene comandos similares al que pegaste que enlazan a un objeto compartido compilado (so).

En tu caso, lo que ha sucedido es que o bien

  1. Instalaste PostGIS sin usar CREATE EXTENSION como por ejemplo ejecutando manualmente el archivo SQL tú mismo. Esto es malo. Deberías eliminar por completo PostGIS y usar CREATE EXTENSION,
  2. Alguien extrajo explícitamente una copia de BOX2D_in desde esa ubicación. Esto puede suceder si alguien sabe lo que está haciendo y quiere "retro-portar" una función a PostGIS hackeándola. Si esa persona se va, sin duda hace las cosas divertidas para el siguiente.

Como nota especial, es posible que tu base de datos sea anterior a la infraestructura de EXTENSION. Estás en la 9.2. Esa infraestructura de EXTENSION fue creada en la 9.1. Si comenzaste antes de la 9.1 (como con la 9.0 o la 8.4) entonces es bastante posible que comenzaste con PostGIS 1.x y simplemente nunca migraste a utilizar adecuadamente la EXTENSION (aunque deberías).

-1voto

Marlon Puntos 111

Encontré el problema. Después de dar muchas vueltas, me di cuenta de que la referencia a la biblioteca debe estar en el volcado de la base de datos sql y una búsqueda rápida con el editor encontró:

CREATE FUNCTION box2d_in(cstring) RETURNS box2d LANGUAGE c IMMUTABLE STRICT
   AS '/Library/PostgreSQL/9.2/lib/postgis-2.0', 'BOX2D_in';

Pero resulta que simplemente modificar el sql para reflejar la nueva biblioteca que es la versión 2.3 no funciona debido a cambios en la biblioteca.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X