web-dev-qa-db-ja.com

Postgisのインストール:タイプ「ジオメトリ」は存在しません

Postgisでテーブルを作成しようとしています。これで page でやる。しかし、postgis.sqlファイルをインポートすると、多くのエラーが発生します。

ERROR:  type "geometry" does not exist

誰がどのように修正できるか知っていますか?

79
yetty

私は同じ問題を抱えていましたが、次のコードを実行することで修正されました

CREATE EXTENSION postgis;

詳細に、

  1. pgAdminを開く
  2. データベースを選択(クリック)します
  3. バーの「SQL」アイコンをクリックします
  4. 「CREATE EXTENSION postgis;」を実行します。コード
157
Krishna Sapkota

最初のエラーでpsqlを停止するには、-v ON_ERROR_STOP=1を使用します(これは デフォルトではオフ です。これが多くのエラーを表示する理由です)。例えば:

psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql

実際のエラーは「ライブラリXをロードできませんでした」のようなもので、状況によって異なります。推測として、SQLスクリプトをインストールする前に次のコマンドを試してください。

ldconfig

(システムによっては、Sudoを前に付ける必要がある場合があります)。このコマンドは、GEOSなどのすべてのシステムライブラリへのパスを更新します。

19
Mike T

Postgis-Extensionがロードされている場合、パブリックスキーマへの検索パスが欠落しているため、SQLでジオメトリタイプが見つからない可能性があります。

試して

SET search_path = ...、public;

scsriptの最初の行に。 (...を他の必要な検索パスに置き換えます)

18
ludwig

端末から実行できます:

psql mydatabasename -c "CREATE EXTENSION postgis";
17
Brendan Nee

データベースで拡張機能を有効にする必要があります。

psql my_database -c "CREATE EXTENSION postgis;"

3
Baptiste Donaux

また、postgis拡張機能を使用しようとしているユーザーが、postgisがセットアップされているスキーマ(私が読んだチュートリアルでは「postgis」と呼ばれる)にアクセスできることを確認する必要があります。

このエラーが発生しましたが、新しいユーザーにデータベースへのアクセス権を与えただけだったので解決しました。作成したデータベースで、次を実行しました。

grant all on schema postgis to USERNAME; 

そして、これはこのエラーを解決しました

2
mozboz

ここでの答えはあなたの問題を解決するかもしれませんが、DBで既にpostgisが有効になっている場合、postgis拡張が有効になっている場所以外のスキーマに(geometry列を持つ)postgisテーブルを復元しようとしている可能性があります。 pgAdminでは、postgis拡張機能をクリックして、指定されたスキーマを確認できます。ジオメトリ列を持つテーブルを別のスキーマに復元しようとすると、このエラーが発生する場合があります。

私はpostgis拡張を変更することでこれを解決しました-しかし、それが必ずしもそれを行うための最良の方法であるかどうかはわかりません。私が知っているのは、テーブルを復元できることだけです。

1
jase81

または...

cursor.execute('create extension postgis')

pythonプログラムで、psycopg2の現在のカーソルを使用します。

0
softweyr

このエラーは、publicではなく別のスキーマでpostgisタイプを使用しようとした場合にも発生する可能性があります。

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機能を使用して続行できます。

0
Leonardo Kuffo

最初に、(pgバージョンに一致する:psql -V)postgisがインストールされていることを確認してください:

Sudo apt install postgis postgresql-9.6-postgis-2.3

テーブルを作成する直前に以下を追加します。

db.engine.execute('create extension postgis') 
db.create_all()
0
Karolius