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.
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.
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