sql >> データベース >  >> RDS >> PostgreSQL

Postgresタイプ{フィールドタイプ}はシェルのみです

    要するに、postgisを再インストールする必要があります。おそらくdrop extension postgis; およびcreate extension postgis;

    より長い説明

    このタイプだけを見逃している可能性がありますが、それだけではないかと思います。試してみたい場合は、2.3からです:

    CREATE TYPE public.geometry
       (INPUT=geometry_in,
           OUTPUT=geometry_out,
           RECEIVE=geometry_recv,
           SEND=geometry_send,
           TYPMOD_IN=geometry_typmod_in,
           TYPMOD_OUT=geometry_typmod_out,
           ANALYZE=geometry_analyze,
           CATEGORY='U', DEFAULT='',
           INTERNALLENGTH=-1, ALIGNMENT=double, STORAGE=MAIN);
    ALTER TYPE public.geometry
      OWNER TO postgres;
    COMMENT ON TYPE public.geometry
      IS 'postgis type: Planar spatial data type.';
    

    シェルについて詳しくは、ドキュメント

    要するに :一部の型は関数を必要とし、その関数はwith型を宣言する必要があるため、どちらも作成できません-通常は。

    この問題を回避するために、Postgresは検証を満たすためだけにほとんどプレースホルダーであるシェルタイプを作成します。

    あなたの場合geometry はシェルタイプであり、正しく宣言されていませんでした。これは、postgisが正しくインストールされなかったことを意味します。

    シェルタイプは次のようになります:

    CREATE TYPE public.geometry
       (INPUT=shell_in,
           OUTPUT=shell_out,
           RECEIVE=-,
           SEND=-,
           ANALYZE=-,
           CATEGORY='P',
        PASSEDBYVALUE, DEFAULT='',
           INTERNALLENGTH=4, ALIGNMENT=int4, STORAGE=PLAIN);
    ALTER TYPE public.geometry
      OWNER TO postgres;
    

    また、シェルタイプを必要とする関数は次のようになります。

    CREATE OR REPLACE FUNCTION geometry_in(cstring)
        RETURNS geometry
        AS '$libdir/postgis-2.3','LWGEOM_in'
        LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
    

    適切なgeometryを振り返ると 定義では、この関数はその一部であるが、このシェルにはないことに気付くでしょう。




    1. Oracle Developer Tools 12のインストールが失敗し、WindowsXPを使用していると主張します。私はWindows7を持っています

    2. Oracleで値に少なくとも1桁の数字が含まれているかどうかを検出する

    3. クライアントコードにインデックスとして何を保存する必要がありますか?

    4. Oracle:行タイプデータを別のテーブルに挿入します