web-dev-qa-db-fra.com

Création d'une extension Postgis: "ERREUR: impossible d'ouvrir le fichier de contrôle d'extension"

Je reçois le message d'erreur suivant lorsque je lance create extension postgis;

ERROR: could not open extension control file "/Library/PostgreSQL/9.6/share/postgresql/extension/postgis.control": No such file or directory

J'utilise Postgres 9.6.3 et PostGIS 2.3.2 installés à l'aide de Homebrew sur OS X El Capitan.

mdfind -name postgis.control montre:

/usr/local/Cellar/postgis/2.3.2/share/postgresql/extension/postgis.control

brew info postgis montre:

PostGIS extension modules installed to:
/usr/local/share/postgresql/extension

Lorsque je lance la console Postgres, je vois:

psql (9.6.3, server 9.6.1)

J'ai lu une question similaire, Installation PostGIS Homebrew référençant un ancien chemin? , et essayé de recharger postgresql en utilisant les commandes données dans la réponse du haut, mais je vois toujours psql (9.6.3, server 9.6.1). De plus, je pense que mon problème est différent car il recherche le fichier de contrôle d'extension dans /Library et non pas /usr/local/Cellar.

Toute aide serait appréciée.

6
Fiona

Lorsque vous essayez d'installer postgis, installez la dernière version de postgresql en tant que dépendance. Donc, si vous avez installé postgres @ V (où V est la version souhaitée de l'utilisateur)

brew install postgresql@V

plus tard, vous exécutez cette commande

brew install postgis

il installera postgres10.1 ou n’importe quelle version est la plus récente.

create extension postgis;

Dans postgresql @ V, il essaiera de vérifier son répertoire d’extension et ne trouvera pas postgis.control dans le répertoire d’extension, car ce postgis est installé dans le dossier d’extension de la version de postgresql.

Pour résoudre ce problème, vous devez créer un lien symbolique depuis l’installation donnée de postgis vers le postgresql @ V souhaité.

Cet exemple pour [email protected]

ln -s  /usr/local/share/postgresql/extension/postgis* /usr/local/Cellar/[email protected]/9.6.6/share/[email protected]/extension/
ln -s /usr/local/lib/postgresql/postgis-2.3.so /usr/local/Cellar/[email protected]/9.6.6/lib/postgis-2.3
ln -s /usr/local/lib/postgresql/rtpostgis-2.3.so /usr/local/Cellar/[email protected]/9.6.6/lib/

avant d'exécuter ces commandes, veuillez vérifier la version de postgresql et le chemin du fichier dans votre système

Merci ce Gist pour l'aide.

2
abby37

J'ai eu un problème similaire avec tous les détails ici . Lorsque le serveur est mentionné dans votre console Postgres, cela signifie que vous faites référence à une base de code plus ancienne. Arrêtez ce serveur et lancez le bon serveur avec les commandes suivantes.

$ brew services list

Cela vous donnera une liste des serveurs de base de données en cours d'exécution. 

$ brew services stop postgresql@<older-version>
$ brew services start postgresql
2
Gwen Au