2012-09-21 16 views
34

मैं Heroku पर मेरे GeoDjango एप्लिकेशन पर heroku run python manage.py syncdb चलाने का प्रयास कर रहा हूँ कर रही 'DatabaseOperations' ऑब्जेक्ट कोई विशेषता 'geo_db_type' त्रुटि है, लेकिन मैं निम्नलिखित त्रुटि मिलती है:हो रही है जब एक syncdb

AttributeError: 'DatabaseOperations' डेटाबेस इंजन के रूप में django.contrib.gis.db.backends.postgis का उपयोग सुनिश्चित करें: वस्तु कोई विशेषता 'geo_db_type'

Allofmyresearch है ही समाधान सामने आए हैं। अजीब बात यह है कि मैं पहले से ही इस कर रहा हूँ है (और मैं भी INSTALLED_APPS में django.contrib.gis है):

settings.py 

DATABASES = { 
    'default': { 
    'ENGINE': 'django.contrib.gis.db.backends.postgis', 
    'NAME': '...', 
    'HOST': '...', 
    'PORT': ..., 
    'USER': '...', 
    'PASSWORD': '...' 
    } 
} 

INSTALLED_APPS = (
    ..., 
    'django.contrib.gis', 
) 

वहाँ कुछ और मुझे याद आ रही है? किसी भी मदद बहुत सराहना कर रहा है, नीचे दिए गए संदर्भ के लिए पूरा त्रुटि ट्रेस है:

Running `python manage.py syncdb` attached to terminal... up, run.1 
Creating tables ... 
Creating table auth_permission 
Creating table auth_group_permissions 
Creating table auth_group 
Creating table auth_user_user_permissions 
Creating table auth_user_groups 
Creating table auth_user 
Creating table django_content_type 
Creating table django_session 
Creating table django_site 
Creating table django_admin_log 
Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/app/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line 
    utility.execute() 
    File "/app/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/app/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/app/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute 
    output = self.handle(*args, **options) 
    File "/app/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle 
    return self.handle_noargs(**options) 
    File "/app/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 91, in handle_noargs 
    sql, references = connection.creation.sql_create_model(model, self.style, seen_models) 
    File "/app/lib/python2.7/site-packages/django/db/backends/creation.py", line 44, in sql_create_model 
    col_type = f.db_type(connection=self.connection) 
    File "/app/lib/python2.7/site-packages/django/contrib/gis/db/models/fields.py", line 200, in db_type 
    return connection.ops.geo_db_type(self) 
AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type' 

अद्यतन: मैं GeoDjango tutorial और Heroku/Django tutorial पीछा किया, और है कि मेरे देव मशीन पर काम करता है एक सरल अनुप्रयोग का निर्माण किया। मैंने इसे custom GeoDjango buildpack का उपयोग करके हेरोकू में धक्का दिया, और सिंकडीबी की कोशिश की, लेकिन एक ही त्रुटि प्राप्त करें। क्या यह Django/GeoDjango, Heroku, या buildpack के साथ एक मुद्दा है? मेरा देव पर्यावरण PostgreSQL 9.1 और PostGIS 2.0 का उपयोग कर रहा है, लेकिन Heroku 9.0.9 और 1.5 का उपयोग करता है, क्या यह समस्या हो सकती है?

उत्तर

-1

बिल्डपैक यहां प्राथमिक अपराधी था। Heroku's buildpack page पर सूचीबद्ध GeoDjango buildpack का उपयोग करने के बजाय, मैंने one of it's forks का उपयोग किया जो हाल ही में अपडेट किया गया था।

इसके अलावा

, जब मैं एक git push heroku master करते हैं, Heroku अनुप्रयोग के लिए एक देव डेटाबेस बनाता है, और जब मैं एक syncdb करते हैं, मेरी DATABASES सेटिंग नजरअंदाज कर दिया है और Heroku बजाय देव डेटाबेस उपयोग करने के लिए ... जाहिर है एक कोशिश करता है मुद्दा, क्योंकि देव डेटाबेस पोस्टगिस स्थापित नहीं/नहीं कर सकते हैं। इसलिए git push (correct buildpack के साथ) के साथ बनाया गया था, इसके बाद मैंने dev डेटाबेस को नष्ट कर दिया, फिर syncdb चलाया और यह काम करता है।

+0

से ऊपर जोड़ा गया था, फिर भी कस्टम बिल्ड पैक का उपयोग करने के बाद भी मुझे यह त्रुटि मिल रही है। – limovala

+6

जबकि सवाल हेरोकू विशिष्ट है, शीर्षक काफी सामान्य है। समस्या तब भी उत्पन्न हो सकती है जब Django डेटाबेस इंजन django.contrib.gis.db.backends.postgis –

42

ओपी GeoDjango buildpack का उपयोग कर रहा था, लेकिन मामले में किसी को भी है कि मैं था Geo buildpack और dj_database_url का उपयोग कर, settings.py में अंतिम पंक्ति मत भूलना यहाँ हो जाता है:

import dj_database_url 
DATABASES['default'] = dj_database_url.config() 
DATABASES['default']['ENGINE'] = 'django.contrib.gis.db.backends.postgis' 
+0

पर सेट नहीं है! यह मेरे लिए पूरी तरह से काम किया – frankV

+1

आज पहले इस में भाग गया, फिक्स के लिए धन्यवाद! – joemeilinger

2

इस पोस्ट पुरानी है लेकिन मैं सिर्फ इस समस्या को अपना जवाब साझा करना चाहता था। मैं डीजे डेटाबेस पैकेज का उपयोग कर रहा हूं, और मुझे नहीं पता था कि PostGIS का उपयोग करते समय कनेक्शन यूआरएल अलग है। पोस्टजीआईएस के लिए कनेक्शन स्ट्रिंग postgis://USER:[email protected]:PORT/NAME

उम्मीद है कि इससे किसी की सहायता मिलती है।

if 'test' in sys.argv: 
    DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.sqlite3', 
      'NAME': '_testdb', 
     } 
    } 

समस्या जा रहा है कि sqlite3 DatabaseOperations वस्तु विशेषता geo_db_type (इस पोस्ट के शीर्षक से पता चलता तरह नहीं है:

13

मैं जब इतनी तरह परीक्षण डाटाबेस सेट के साथ परीक्षण चलाने के लिए कोशिश कर रहा है यह त्रुटि आई)।

 'ENGINE': 'django.contrib.gis.db.backends.spatialite' 

स्थापना के निर्देश के साथ, हर संभव बैकेंड geodjango स्थापना पर Django डॉक्स देखें:: https://docs.djangoproject.com/en/1.9/ref/contrib/gis/install/#spatial-database

0

मैं भूल गया

मेरे समाधान SQLite बराबर जीआईएस इंजन के लिए बैकएंड बदलने के लिए था सेटिंग्स.py:

# Update database configuration with $DATABASE_URL. 
#db_from_env = dj_database_url.config(conn_max_age=500) 
#DATABASES['default'].update(db_from_env) 

ये पंक्तियां सेटिंग्स को ओवरराइड कर रही थीं,