回答:
同じ問題がありましたが、次のコードを実行することで修正されました
CREATE EXTENSION postgis;
詳細に、
postgis
ます。私は次のコマンドを実行する必要があり、すべてが順調でした:DO $$ BEGIN EXECUTE 'alter database '||current_database()||' set search_path = "$user", public, lookup, postgis'; END; $$ ;
最初のエラーでpsqlを停止させるには、-v ON_ERROR_STOP=1
(デフォルトではオフになっているため、多くのエラーが表示されるのはこのためです)。例えば:
psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql
実際のエラーは「ライブラリXをロードできませんでした」のようなもので、状況によって異なります。推測として、SQLスクリプトをインストールする前に次のコマンドを試してください。
ldconfig
(sudo
システムによっては、接頭辞を付ける必要がある場合があります)。このコマンドは、GEOSなどのすべてのシステムライブラリへのパスを更新します。
データベースで拡張機能を有効にする必要があります。
psql my_database -c "CREATE EXTENSION postgis;"
このエラーは、以外のスキーマでpostgisタイプを使用しようとした場合にも発生する可能性がありますpublic
。
独自のスキーマを作成し、postgis 2.3以降を使用してこのエラーが発生した場合は、ここに記載されているように次の手順を実行します。
CREATE SCHEMA IF NOT EXISTS my_schema;
CREATE extension postgis;
UPDATE pg_extension
SET extrelocatable = TRUE
WHERE extname = 'postgis';
ALTER EXTENSION postgis
SET SCHEMA my_schema;
ALTER EXTENSION postgis
UPDATE TO "2.5.2next";
ALTER EXTENSION postgis
UPDATE TO "2.5.2";
SET search_path TO my_schema;
次に、postgisの機能を使用します。
ここでの回答で問題が解決する可能性がありますが、DBで既にpostgisが有効になっている場合は、postgis拡張機能が有効になっている場所以外のスキーマにpostgesテーブル(geometry列を含む)を復元しようとしていることが問題である可能性があります。pgAdminでは、postgis拡張機能をクリックして、指定されているスキーマを確認できます。ジオメトリ列を含むテーブルを別のスキーマに復元しようとすると、このエラーが発生する可能性があります。
私は自分のpostgis拡張機能を変更することでこれを解決しました-しかし、それが必ずしもそれを行うための最良の方法であったかどうかはわかりません。私が知っているのは、それによってテーブルを復元できるということだけです。