要するに、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.';
シェルについて詳しくは、ドキュメントをご覧ください。 a> 。
要するに :一部の型は関数を必要とし、その関数は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
を振り返ると 定義では、この関数はその一部であるが、このシェルにはないことに気付くでしょう。