Накратко, трябва да преинсталирате 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.';
Що се отнася до кои черупки, можете да прочетете повече за тях в документация .
Накратко :Някои типове изискват функции, които от своя страна изискват този тип да бъде деклариран, така че не могат да бъдат създадени - нормално.
За да заобиколи този проблем, Postgres ще създаде типове обвивки, които до голяма степен са запазени места, само за да удовлетворят проверката.
Във вашия случай geometry
е тип shell и не е правилно деклариран, което означава, че 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
ще забележите, че тази функция е част от нея, но не и в тази обвивка.