web-dev-qa-db-ja.com

Postgis拡張機能の作成:「エラー:拡張機能制御ファイルを開けませんでした」

_create extension postgis;_を実行すると、次のエラーが発生します

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

OSX El CapitanでHomebrewを使用してインストールされたPostgres 9.6.3およびPostGIS 2.3.2を使用しています。

_mdfind -name postgis.control_は以下を示します:

_/usr/local/Cellar/postgis/2.3.2/share/postgresql/extension/postgis.control_

_brew info postgis_は以下を示します:

_PostGIS extension modules installed to:
/usr/local/share/postgresql/extension
_

Postgresコンソールを起動すると、次のように表示されます。

_psql (9.6.3, server 9.6.1)
_

同様の質問 古いパスを参照するPostGIS Homebrewのインストール? を読み、トップアンサーで指定されたコマンドを使用してpostgresqlをリロードしようとしましたが、psql (9.6.3, server 9.6.1)が引き続き表示されます。また、_/Library_ではなく_/usr/local/Cellar_で拡張制御ファイルを探しているため、私の問題は異なると思います。

任意の助けいただければ幸いです。

9
Fiona

Postgisをインストールしようとすると、依存関係として最新バージョンのpostgresqlがインストールされます。したがって、postgres @ Vをインストールした場合(Vはユーザーが希望するバージョンです)

brew install postgresql@V

後でこのコマンドを実行します

brew install postgis

postgres10.1または最新のものをインストールします。だから実行したら

create extension postgis;

Postgresql @ Vでは、拡張ディレクトリを確認しようとしますが、このpostgisは、インストールされているpostgresqlバージョンの拡張フォルダにインストールされているため、拡張ディレクトリにpostgis.controlが見つかりません。

この問題を解決するには、指定したpostgisのインストールから目的のpostgresql @ Vへのシンボリックリンクを作成する必要があります。

この[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/

これらのコマンドを実行する前に、システムのpostgresqlのバージョンとファイルパスを確認してください

助けてくれてありがとう this Gist .

3
abby37

完全な詳細 here で同様の問題が発生しました。 Postgresコンソールでサーバーが言及されている場合、それは古いコードベースを参照していることを意味します。そのサーバーを停止し、次のコマンドで正しいサーバーを起動します。

$ brew services list

これにより、実行中のデータベースサーバーのリストが表示されます。

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