2015-03-01 2 views
5

Ich habe von Postgresql 9.3 auf 9.4 aktualisiert und jetzt möchte ich meine Daten migrieren.Migration von Postgresql 9.3 auf 9.4, Postgis

Also das ist, was ich versucht habe zu tun. Zuerst lief ich die alte postgresql wie so

/opt/pgsql-9.3/bin/pg_ctl -D /var/lib/postgres/data/ start 

Dann habe ich versucht, die alte Datenbank in eine Datei zu speichern:

/opt/pgsql-9.3/bin/pg_dumpall >> old_backup.sql 

Und es hat mir gesagt:

pg_dump: [archiver (db)] query failed: ERROR: could not access file "$libdir/postgis-2.1": No such file or directory 

So in Ordnung, Ich habe versucht, die Postgis-2.1-Dateien zu finden und sie in die libdir

find/-name "*postgis-2.1*" 
/usr/lib/postgresql/rtpostgis-2.1.so 
/usr/lib/postgresql/postgis-2.1.so 
/usr/lib/postgresql/postgis-2.1 <----- 
kopieren

Okay, was ist nun die libdir?

/opt/pgsql-9.3/bin/pg_config --pkglibdir 
/opt/pgsql-9.3/lib 

Also machte ich einen symbolischen Link in /opt/pgsql-9.3/lib-here /usr/lib/postgresql/postgis-2.1:

pwd 
/opt/pgsql-9.3/lib 
ls -l postgis-2.1 
postgis-2.1 -> /usr/share/postgresql/contrib/postgis-2.1 

Aber ich bekomme immer noch die Fehlermeldung: Abfrage schlug fehl: Fehler: Datei "$ libdir/PostGIS-2.1" zugreifen können: Keine solche Datei oder Verzeichnis

Ich bin irgendwie aus Ideen. Vielleicht kann mir jemand helfen?

Ich usnig Arch Linux

PS

Postgis installiert ist:

pacman -S postgis 
warning: postgis-2.1.5-1 is up to date -- reinstalling 

Und hier sind die Binärdateien:

find/-name "*postgis-2.1*" 
/usr/lib/postgresql/rtpostgis-2.1.so <---- binary 
/usr/lib/postgresql/postgis-2.1.so  <----- binary 
/opt/pgsql-9.3/lib/postgis-2.1   <----- that's the symlink from earlier 
/usr/share/postgresql/contrib/postgis-2.1 
+0

Sie haben versucht, pg_dump _after_ das Upgrade? – wildplasser

+0

leider ja. –

+0

Und das Upgrade wurde unter 'pg_upgrade' durchgeführt?Übrigens: Hast du ldconfig nach deiner Jonglieraktion mit den symlinked shared libraries gestartet? – wildplasser

Antwort

5

Die symbolische Verbindung zu der zeigt "share" Dateien, verwendet für CREATE EXTENSION und Familie. Was Sie brauchen, ist die .so Dateien im Verzeichnis von pg_config --pkglibdir zurück Punkt:

$ rm /opt/pgsql-9.3/lib/postgis-2.1 # it is a wrong link, so undo it 
$ ln -s /usr/lib/postgresql/postgis-2.1.so /opt/pgsql-9.3/lib/ 

Nun ist die PostGIS .so Datei wird in "$libdir" und Sie werden in der Lage zu führen pg_dumpall.

Natürlich halte ich es nicht für eine vernünftige Einstellung, aber als Ihr Upgrade nehme ich an, dass dies nur ein Zwischenzustand ist und Sie werden danach PostgreSQL 9.3 komplett entfernen. Sie müssen auch überprüfen, ob PostGIS mit Bibliotheken von 9.3 verbunden ist, andernfalls könnten Sie Probleme haben.

9

Ich habe ähnliches Problem, aber löse es ein bisschen anders:

dbname=#\dx 

    Name | Version | Schema |        Description 
---------+---------+------------+--------------------------------------------------------------------- 
plpgsql | 1.0  | pg_catalog | PL/pgSQL procedural language 
postgis | 2.1.5 | postgis | PostGIS geometry, geography, and raster spatial types and functions 


dbname=#ALTER EXTENSION postgis UPDATE TO '2.2.0'; 
dbname=#\dx 

    Name | Version | Schema |        Description 
---------+---------+------------+--------------------------------------------------------------------- 
plpgsql | 1.0  | pg_catalog | PL/pgSQL procedural language 
postgis | 2.2.0 | postgis | PostGIS geometry, geography, and raster spatial types and functions 
+1

Von Version 2.1.7 auf OS X (Homebrew) wurde nur auf PostGIS 2.2.0 aktualisiert, und diese Lösung funktionierte für mich. Vielen Dank! – Geoff

+1

arbeitete für mich auf Arch nach Update über Pacman – blissini

+1

Dies ist die offizielle Art der Aktualisierung der Postgis-Erweiterung bereits in einer Datenbank installiert, so sollte es besser als andere Antworten sein –

0

ich hatte das gleiche Problem. Meine Lösung mit Docker war:

docker exec -i $(docker-compose ps -q postgis) ln -s /usr/lib/postgresql/9.6/lib/postgis-2.3.so /usr/lib/postgresql/9.6/lib/postgis-2.1.so