Postgresql 9.4 -> 9.5beta2 kann nach dem Upgrade von Postgis 2.1.6 -> 2.2.0 nicht aktualisiert werden

7

Hier ist meine Situation:

  1. Ich habe mit Postgresql 9.4.5 und Postgis 2.1.6 begonnen. Alles läuft reibungslos. Beide werden von der Quelle installiert.
  2. Ich habe Postgis auf 2.2.0 aktualisiert (Quelle herunterladen, konfigurieren, erstellen, dann installieren ALTER EXTENSION postgis UPGRADE TO '2.2.0';). Dies scheint funktioniert zu haben ( select postgis_full_version()zeigt POSTGIS="2.2.0 r14208" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.9.1, 04 March 2015" GDAL="GDAL 2.0.1, released 2015/09/15" LIBXML="2.9.3" LIBJSON="0.11" RASTERin beiden Datenbanken, wo postgis installiert wurde), obwohl das alte postgis-2.1.soim lib- Verzeichnis belassen wurde .
  3. Ich versuche, Postgresql von 9.4.5 auf 9.5beta2 zu aktualisieren. Ich lade die Quelle herunter, konfiguriere, mache, installiere, installiere Postgis 2.2.0, initdb und mache mich bereit zum Ausführen pg_upgrade. pg_upgradeschlägt fehl mit:

Ihre Installation verweist auf ladbare Bibliotheken, die in der neuen Installation fehlen. Sie können diese Bibliotheken zur neuen Installation hinzufügen oder die Funktionen, die sie verwenden, aus der alten Installation entfernen. Eine Liste der Problembibliotheken befindet sich in der Datei loadable_libraries.txt

loadable_libraries.txt enthält:

Bibliothek "$ libdir / rtpostgis-2.1" konnte nicht geladen werden FEHLER: Zugriff auf Datei "$ libdir / rtpostgis-2.1" nicht möglich: Keine solche Datei oder kein solches Verzeichnis

Bibliothek "$ libdir / postgis-2.1" konnte nicht geladen werden FEHLER: Zugriff auf Datei "$ libdir / postgis-2.1" nicht möglich: Keine solche Datei oder kein solches Verzeichnis

Ich bin mir nicht sicher, warum die neue Version von Postgresql die alte Version von Postgis benötigt ... hätte sie nicht entfernt werden sollen? Ich habe die alten postgis-2.1.sound rtpostgis-2.1.soDateien aus dem lib-Verzeichnis von 9.4 verschoben, aber der Fehler bleibt bestehen.

Ich habe auch versucht, Postgis 2.1.6 gegen Postgresql 9.5beta2 zu kompilieren, aber die Kompilierung ist mit folgendem Fehler fehlgeschlagen:

lwgeom_accum.c: In function ‘pgis_geometry_accum_transfn’: lwgeom_accum.c:109:46: error: ‘AggState {aka struct AggState}’ has no member named ‘aggcontext’ aggcontext = ((AggState *) fcinfo->context)->aggcontext;

Ich habe auch versucht, die 2.1-Bibliotheken aus dem 9.4-Verzeichnis in das 9.5-Verzeichnis zu kopieren, aber das schlug fehl, weil die Postgresql-Version nicht übereinstimmte.

Das Speichern und erneute Laden aller Datenbanken ist möglich, jedoch nur als letzter Ausweg, da die Datenbanken sehr groß sind. Wenn die Antwort lautet "weil 9.5 noch in der Beta ist", könnte ich das akzeptieren, obwohl ihre Betas in der Vergangenheit ziemlich stabil zu sein scheinen.

elynnaie
quelle

Antworten:

3

Ich konnte mein Problem folgendermaßen lösen:

  1. Laden Sie die Quelle auf 2.1.6 herunter und wenden Sie den hier gefundenen Patch an
  2. Postgis 2.1.6 wird jetzt mit Postgresql 9.5beta2 kompiliert. Kompilieren und installieren.
  3. pg_upgrade funktioniert jetzt, nachdem die alte Version von Postgis installiert wurde.

Ich denke nicht, dass dies eine ideale Situation ist, aber zumindest läuft es jetzt.

elynnaie
quelle
Genial! Das hat mir geholfen, von Seite 9.4 / Postgis-2.1 zu Seite 9.5 / Postgis-2.2 zu wechseln :-)
Christian Benke