संक्षेप में, आपको पोस्टगिस को फिर से स्थापित करने की आवश्यकता है, संभवतः केवल 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.';
किस शेल के लिए, आप उनके बारे में documentationमें पढ़ सकते हैं। ए> ।
संक्षेप में :कुछ प्रकारों को ऐसे कार्यों की आवश्यकता होती है जिनके बदले में उस प्रकार की आवश्यकता होती है जिसे घोषित किया जाना है, इसलिए न तो बनाया जा सकता है - सामान्य रूप से।
उस समस्या को हल करने के लिए, Postgres शेल प्रकार बनाएगा जो सत्यापन को संतुष्ट करने के लिए बहुत अधिक प्लेसहोल्डर हैं।
आपके मामले में geometry
शेल प्रकार है और ठीक से घोषित नहीं किया गया था, जिसका अर्थ है कि पोस्टगिस सही तरीके से स्थापित नहीं किया गया था।
शैल प्रकार इस तरह दिखता है:
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
पर पीछे मुड़कर देखें तो परिभाषा आप देखेंगे कि यह फ़ंक्शन इसका हिस्सा है, लेकिन इस शेल में नहीं।