पोस्टगिस इंस्टॉलेशन: टाइप "ज्योमेट्री" मौजूद नहीं है


95

मैं Postgis के साथ तालिका बनाने की कोशिश कर रहा हूं। मैं इसे इस पेज से करता हूं । लेकिन जब मैं postgis.sql फ़ाइल आयात करता हूं, मुझे बहुत सारी त्रुटियां मिलती हैं:

ERROR:  type "geometry" does not exist

क्या किसी को पता है कि मैं इसे कैसे ठीक कर सकता हूं?

जवाबों:


201

मुझे भी यही समस्या थी, लेकिन यह निम्नलिखित कोड चलाकर तय किया गया था

CREATE EXTENSION postgis;

विस्तार से,

  1. pgAdmin खोलें
  2. अपने डेटाबेस का चयन करें (क्लिक करें)
  3. बार पर "SQL" आइकन पर क्लिक करें
  4. "सृजन विस्तार पोस्टगीस चलाएं?" कोड

3
धन्यवाद। BTW, यदि कोई इस कोड को चलाने के लिए 'psql' का उपयोग करता है, तो सुनिश्चित करें कि भूमिका में 'Superuser' विशेषता / विशेषाधिकार है।
यांग

2
जीवन बचाओ! मैंने सोचा था कि मैं इसे पहले ही सेट कर
दूंगा

2
ध्यान दें कि यह एक विशेष डेटाबेस के लिए विशिष्ट है जिसे आप उपयोग कर रहे हैं। यह इंस्टालेशन-वाइड नहीं है।
फफूंदी

1
मैंने एक pg_dump को वापस रखा, और वही समस्या थी। मेरा पोस्टगिस एक्सटेंशन इसे डेटा को कस्टम स्कीम में रखता है, जिसे कहा जाता है postgis। मुझे निम्न कमांड को चलाने की आवश्यकता थी, और सब कुछ फिर से ठीक हो गया था:DO $$ BEGIN EXECUTE 'alter database '||current_database()||' set search_path = "$user", public, lookup, postgis'; END; $$ ;
डॉकमैन

23

यदि पोस्टगिस-एक्सटेंशन लोड किया गया है, तो आपका एसक्यूएल शायद सार्वजनिक स्कीमा को लापता खोज-पथ के कारण ज्यामिति-प्रकार नहीं पाता है।

प्रयत्न

SET search_path = ..., सार्वजनिक;

आपके स्क्रीप्ट की पहली पंक्ति में। (बदलें ... अन्य आवश्यक खोज-पथों के साथ)



18

पहली त्रुटि पर रोकने के लिए psql प्राप्त करने के लिए, उपयोग करें -v ON_ERROR_STOP=1(जो डिफ़ॉल्ट रूप से बंद है , यही कारण है कि आपको कई त्रुटियां दिखाई देती हैं)। उदाहरण के लिए:

psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql

वास्तविक त्रुटि कुछ इस तरह है "लाइब्रेरी एक्स लोड नहीं कर सका", जो आपकी स्थिति पर भिन्न हो सकता है। एक अनुमान के रूप में, sql स्क्रिप्ट स्थापित करने से पहले इस कमांड को आज़माएँ:

ldconfig

(आपको sudoअपने सिस्टम के आधार पर उपसर्ग की आवश्यकता हो सकती है)। यह कमांड सभी सिस्टम लाइब्रेरी के लिए रास्तों को अपडेट करता है, जैसे कि GEOS।



5

यदि आप इसके बजाय किसी अन्य स्कीमा पर पोस्टगिस प्रकारों का उपयोग करने का प्रयास करते हैं तो यह त्रुटि भी हो सकती है public

यदि आप अपना स्वयं का स्कीमा बना रहे हैं, तो पोस्टगिस 2.3 या उच्चतर का उपयोग करके और इस त्रुटि का सामना करने के बाद, निम्न कार्य यहां करें :

CREATE SCHEMA IF NOT EXISTS my_schema;
CREATE extension postgis;

UPDATE pg_extension 
  SET extrelocatable = TRUE 
    WHERE extname = 'postgis';

ALTER EXTENSION postgis 
  SET SCHEMA my_schema;

ALTER EXTENSION postgis 
  UPDATE TO "2.5.2next";

ALTER EXTENSION postgis 
  UPDATE TO "2.5.2";

SET search_path TO my_schema;

फिर आप पोस्टगिस फंक्शनलिटी का उपयोग करने के लिए आगे बढ़ सकते हैं।


3

आपको यह भी सुनिश्चित करने की आवश्यकता है कि जिस उपयोगकर्ता के रूप में आप पोस्टगिस एक्सटेंशन का उपयोग करने का प्रयास कर रहे हैं, उसके पास स्कीमा तक पहुंच है जहां पोस्टगिस सेटअप है (जो कि मैंने पढ़ा ट्यूटोरियल में 'पोस्टगिस' कहा जाता है)।

मेरे पास बस यह त्रुटि थी, और इसे हल किया गया था क्योंकि मैंने केवल डेटाबेस में एक नया उपयोगकर्ता एक्सेस दिया था। मेरे द्वारा बनाए गए डेटाबेस में, मैं भाग गया:

grant all on schema postgis to USERNAME; 

और इस त्रुटि को हल किया


1

यहां उत्तर आपकी समस्या को हल कर सकते हैं, हालांकि यदि आपके पास पहले से ही आपके DB पर पोस्टगिस सक्षम है, तो समस्या यह हो सकती है कि आप पोस्टगिस तालिका (एक ज्यामिति स्तंभ के साथ) को स्कीमा में अन्य जगह पर पुनर्स्थापित करने का प्रयास कर रहे हैं जहां से आपकी पोस्टगिस एक्सटेंशन सक्षम है। PgAdmin में आप पोस्टगिस एक्सटेंशन पर क्लिक कर सकते हैं और देख सकते हैं कि कौन सा स्कीमा निर्दिष्ट है। यदि आप ज्यामिति स्तंभ के साथ एक तालिका को एक अलग स्कीमा में पुनर्स्थापित करने का प्रयास कर रहे हैं, तो आपको यह त्रुटि मिल सकती है।

मैंने अपने पोस्टगिस एक्सटेंशन को बदलकर इसे हल किया - हालांकि मुझे यकीन नहीं है कि अगर यह जरूरी था कि इसे करने का सबसे अच्छा तरीका है। मुझे पता है कि इसने मुझे मेज को बहाल करने की अनुमति दी।


पोस्टगिस संस्करण 2.3 तक आप एक्सटेंशन को किसी अन्य स्कीमा में स्थानांतरित कर सकते हैं, जिसने कुछ समय के लिए मेरे लिए इस समस्या को हल किया
Daniël Tulp

0

या ...

cursor.execute('create extension postgis')

psyopopg2 से वर्तमान कर्सर का उपयोग करके अपने अजगर कार्यक्रम में।


0

पहले सुनिश्चित करें कि आपके पास (मिलान संस्करण: psql -V) पोस्टगिस स्थापित है:

sudo apt install postgis postgresql-9.6-postgis-2.3

टेबल निर्माण से पहले बस जोड़ें:

db.engine.execute('create extension postgis') 
db.create_all()
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.