Kort sagt, du behöver installera om postgis, möjligen bara drop extension postgis;
och create extension postgis;
.
Längre förklaring
Du kan möjligen sakna just den här typen, men jag tvivlar på att det är just det, men om du vill prova, här är från 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.';
Vad gäller vilka skal kan du läsa mer om dem i dokumentationen .
Kort sagt :Vissa typer kräver funktioner som i sin tur kräver att typen med ska deklareras, så ingen av dem kan skapas - normalt.
För att komma runt det problemet kommer Postgres att skapa skaltyper som är ganska mycket platshållare bara för att tillfredsställa validering.
I ditt fall geometry
är skaltyp och deklarerades inte korrekt, vilket innebär att postgis inte installerades korrekt.
Skaltypen ser ut så här:
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;
Och funktion som kräver skaltyp kan vara:
CREATE OR REPLACE FUNCTION geometry_in(cstring)
RETURNS geometry
AS '$libdir/postgis-2.3','LWGEOM_in'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
Om du ser tillbaka på korrekt geometry
definition kommer du att märka att den här funktionen är en del av den, men inte i detta skal.