/ / सुपरसुअर भूमिका के बिना विस्तार नहीं कर सकते - django, postgresql, postgresql-9.1, postgis

सुपरसियर भूमिका के बिना विस्तार नहीं बना सकते - django, postgresql, postgresql-9.1, postgis

मैं Django में इकाई परीक्षण चलाने की कोशिश कर रहा हूं, और यह एक नया डेटाबेस बनाता है। डेटाबेस में पोस्टगिस एक्सटेंशन हैं और जब मैं नियमित रूप से डेटाबेस बनाता हूं, तो मैं "क्रिएट एक्सटेंस पोस्टगिस" का उपयोग करता हूं।

हालाँकि, जब मैं परीक्षण चलाता हूँ, तो यह मुझे निम्न त्रुटि देता है:

$ ./manage.py test
Creating test database for alias "default"...
Got an error creating the test database: database "test_project" already exists

Type "yes" if you would like to try deleting the test database "test_project", or "no" to cancel: yes
Destroying old test database "default"...
DatabaseError: permission denied to create extension "postgis"
HINT:  Must be superuser to create this extension.

उपयोगकर्ता के पास पहले से ही डीबी विशेषाधिकार बनाएं, मैं पोस्टगिस 2.0 के साथ Ubuntu 12.04 पर PostgreSQL 9.1 का उपयोग कर रहा हूं।

उत्तर:

उत्तर № 1 के लिए 63

पोस्टगिस पर Django प्रलेखन उपयोगकर्ता विशेषाधिकार स्थापित करने के बारे में कुछ जानकारी है.

सबसे खराब स्थिति में आप एक नया सुपरयुसर बना सकते हैं:

$ createuser --superuser <user_name>

या किसी मौजूदा उपयोगकर्ता की भूमिका परिवर्तित करें:

postgres# ALTER ROLE <user_name> SUPERUSER;

जवाब के लिए 26 № 2

सबसे आसान तरीका मुझे मिला:

su postgres
psql
alter role user_name superuser;
#then create the extension as the user in a different screen
alter role user_name nosuperuser;

मूल रूप से उपयोगकर्ता को थोड़े समय के लिए सुपरसुअर शक्तियां देते हैं, और एक्सटेंशन बनाते हैं। फिर सुपरसुवर शक्तियों को निरस्त करें।

आप भी उपयोग कर सकते हैं connect user_name उस उपयोगकर्ता बनने के लिए और सीधे से एक्सटेंशन बनाएं postgres उपयोगकर्ता।


जवाब के लिए 0 № 3

इसे हल करने का एक और तरीका जिसमें सुझाव दिया गया है django दस्तावेज़

$ psql <db name>
> CREATE EXTENSION postgis;

आप एक डेटाबेस में सुपरयुसर के रूप में लॉग इन कर सकते हैं और एक बार एक्सटेंशन बना सकते हैं। इसके बाद एक्सटेंशन आपके एपि के db यूजर के लिए उपलब्ध होगा CREATE EXTENSION IF NOT EXISTS postgis पोस्टग्रेज नहीं फेकेंगे।

यदि आप त्रुटियों को देख रहे हैं, तो डबलचेक को माइग्रेट करते समय आपने सही डेटाबेस में एक सैंपल सैसेशन बनाया था

$ psql
=> l            - list databases
=> c <db name>  - connect to django db
=> create extension postgis;

यदि आप तालिका देखते हैं तो आप सत्यापित कर सकते हैं कि एक्सटेंशन स्थापित है spatial_ref_sys

=> dt
List of relations
Schema |            Name            | Type  |  Owner
--------+----------------------------+-------+----------
public | spatial_ref_sys            | table | postgres