la migration de postgresql 9.3 à 9.4, postgis

Je suis passé de postgresql 9.3 à 9.4 et je souhaite maintenant migrer mes données.

Donc c’est ce que j’ai essayé de faire. D’abord j’ai couru l’ancien postgresql comme ça

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

Ensuite, j’ai essayé de vider l’ancienne firebase database dans un fichier:

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

Et il m’a dit:

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

Bon, j’ai essayé de trouver les fichiers postgis-2.1 et de les copier dans le 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 <----- 

Ok, maintenant, quel est le libdir ?

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

J’ai donc créé un lien symbolique dans /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/consortingb/postgis-2.1 

Mais j’obtiens quand même l’erreur: query failed: ERREUR: impossible d’accéder au fichier “$ libdir / postgis-2.1”: Pas de fichier ou répertoire de ce type

Je suis un peu hors des idées. Peut-être quelqu’un peut me aider?

Je suis usnig arch linux

PS

Postgis est installé:

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

Et voici les binarys:

 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 

Le lien symbolique pointe vers les fichiers “share”, utilisés pour CREATE EXTENSION et la famille. Ce dont vous avez besoin est de pointer les fichiers .so à l’intérieur du répertoire renvoyé par pg_config --pkglibdir :

 $ 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/ 

Maintenant, le fichier PostGIS .so sera dans "$libdir" et vous pourrez effectuer pg_dumpall .

Bien sûr, le garder de cette façon ne me semble pas être une configuration saine, mais en tant que mise à niveau, je suppose qu’il ne s’agit que d’un état intermédiaire et que vous supprimerez PostgreSQL 9.3 entièrement par la suite. Vous devez également vérifier si PostGIS est lié aux bibliothèques 9.3, sinon vous risquez d’avoir des problèmes.

J’ai un problème similaire, mais le résoudre un peu différemment:

 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 

J’ai eu le même problème. Ma solution avec Docker était la suivante:

 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