2016-02-04 32 views
6

के साथ Django ऐप का परीक्षण करना मैं एक जीआईएस Django एप्लिकेशन पर डेटाबेस बैकएंड के रूप में पोस्ट जीआईएसआई पर चलने का प्रयास कर रहा हूं।पोस्टगिस बैकएंड

जब मैं परीक्षण चलाने के लिए प्रयास करते हैं, मैं निम्नलिखित त्रुटि मिलती है:

django.db.utils.ProgrammingError: permission denied to create extension "postgis" 
HINT: Must be superuser to create this extension. 

त्रुटि समझ में आता है। केवल व्यवस्थापक डेटाबेस उपयोगकर्ता एक्सटेंशन इंस्टॉल कर सकते हैं क्योंकि यह विशेषाधिकार मनमाने ढंग से बाहरी कोड निष्पादन की अनुमति देता है। लेकिन चूंकि टेस्ट रनर को प्रत्येक बार परीक्षण चलाने के बाद डेटाबेस को फिर से बनाना होता है, इसलिए Django का डेटाबेस उपयोगकर्ता आगे नहीं बढ़ सकता है।

यहां मेरा डेटाबेस कॉन्फ़िगरेशन है।

DATABASES = { 
    'default': { 
     'ENGINE': 'django.contrib.gis.db.backends.postgis', 
     'NAME': 'my_db', 
     'USER': 'my_user', 
     'PASSWORD': 'my_crazy_secure_password', 
     'HOST': '127.0.0.1', 
     'PORT': '', 
     'TEST_NAME': 'test_my_db', 
    }, 
} 

उत्तर

9

मेरा समाधान यह आश्चर्यजनक रूप से सरल था, एक बार मैंने इसे समझ लिया।

template1 डेटाबेस से कनेक्ट करें, और CREATE EXTENSION IF NOT EXISTS postgis; चलाएं। template1 डेटाबेस की प्रतिलिपि बनाई जाती है जब कोई नया डेटाबेस बनाया जाता है, इसलिए सभी नए डेटाबेस में पहले से ही एक्सटेंशन इंस्टॉल हो जाएगा।

+0

एक आकर्षण की तरह काम किया। तुम राजा हो – bbrame

+2

रन: 'sudo -u postgres psql -d template1 -c "एक्सटेंशन बनाएं अगर पोस्टगिस नहीं है;" –