2013-02-10 6 views
8

Versuch, den Anweisungen here zu folgen, um eine Django-Instanz auf Heroku einzurichten.Unsachgemäß konfiguriert ("settings.DATABASES ist falsch konfiguriert.") Fehler beim Einrichten von Django

Got bis zur Installation von Sellerie, bis zu dem folgenden Schritt:

$ python manage.py syncdb 

, wenn ich die folgenden Fehlermeldung erhalten:

raise ImproperlyConfigured("settings.DATABASES is improperly configured. "django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.

Ich glaube, dass ich meine settings.py Datei in dem habe richtiger Platz (project-name/project-name), und ich laufe Django 1.4.3, aber wenn ich versuche, manage.py diffsettings laufen zu lassen, bekomme ich die folgende Ausgabe:

BROKER_BACKEND = 'django' ### DATABASES = {'default': {'ENGINE': 'django.db.backends.dummy', 'TEST_MIRROR': None, 'NAME': '', 'TEST_CHARSET': None, 'TIME_ZONE': 'UTC', 'TEST_COLLATION': None, 'PORT': '', 'HOST': '', 'USER': '', 'TEST_NAME': None, 'PASSWORD': '', 'OPTIONS': {}}}

Absolut keine Ahnung, wo der django.db.backends.dummy Eintrag herkommt, meine 10 hat 'ENGINE': 'django.db.backends.postgresql_psycopg2', die ich vermute, ist der richtige Eintrag, obwohl die Heroku-Anweisungen Ihnen nicht sagen, es an irgendeinem Punkt zu aktualisieren.

Irgendwelche Gedanken, was ich hier bearbeiten muss?

+0

wo sind die Einstellungscodes? – catherine

Antwort

6

Probieren Sie diese Zeilen nach dem DATABASE Einstellung Ihrer settings.py hinzufügen

# Your Database setting. 
DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 
     'NAME': '', # Or path to database file if using sqlite3. 
     'USER': '', # Not used with sqlite3. 
     'PASSWORD': '', # Not used with sqlite3. 
     'HOST': '', # Set to empty string for localhost. Not used with sqlite3. 
     'PORT': '', # Set to empty string for default. Not used with sqlite3. 
    } 
} 
# Add these two lines. 
import dj_database_url 
DATABASES['default'] = dj_database_url.config(default='sqlite://db/sqlite3.db') 
+0

eigentlich ist das nah, ich hatte '#import dj_database_url/#DATABASES ['default'] = dj_database_url.config()' in meiner Einstellungsdatei sowie einen 'setup_loader()' Anruf zu djcellery. Das Auskommentieren dieser zwei Zeilen gibt mir jetzt ein 'django.core.exceptions.ImproperlyConfigured: Sie müssen NAME in Ihrer Django-Einstellungsdatei angeben. – fox

+1

Großartig! Wussten Sie, dass das Hinzufügen von default arg in dj_url_config() Ihre Einstellung in Ihrer lokalen Umgebung verfügbar macht? Auf diese Weise müssen Sie sich nicht erneut mit der Einstellung von dB beschäftigen. Happy coding :) –

8

ich in der gleichen Ausgabe lief. In dem Heroku docs bei https://devcenter.heroku.com/articles/django#prerequisites, sagt er folgende zu settings.py hinzuzufügen:

DATABASES['default'] = dj_database_url.config() 

Sie in einem Parameter übergeben können:

DATABASES['default'] = dj_database_url.config(default='postgres://user:[email protected]/dbname') 

Und das ermöglicht es Ihnen, lokal und auf Heroku zu entwickeln. Der Teil, der tatsächlich das Problem löste, war, dass die Heroku Konfigurationsumgebungsvariable von DATABASE_URL nicht wirklich gesetzt wurde. Um dies einzustellen, lief ich

$ heroku config 

Ich sah die Datenbank-URL zu einer separaten Konfigurationsvariable zugeordnet. Also habe ich eine neue Variable erstellt:

$ heroko config:add DATABASE_URL={#the database url} 

Das löste mein Problem. Ich hoffe, es hilft anderen mit ähnlichen Problemen.

+0

Wie ermittle ich den "dbname" in dem, was Sie gepostet haben? – Eitan

+0

Sie können die Datenbank-URL unter [https://postgres.heroku.com/databases](https://postgres.heroku.com/databases) -> Ihre_Datenbank -> URL _show_ abrufen, dann können Sie diese URL als Standard verwenden. Stellen Sie sicher, dass Sie 'python manage.py migrate' vor einer weiteren Datenbankaktion ausführen. – KTU

1

Vielen Dank Chatri, als Sie vorgeschlagen haben, das default = 'sqlite: //db/sqlite3.db' hinzuzufügen, behob das Problem.

+0

Vielen Dank @Rads für die Erwähnung.Löste mein Problem –

+0

Ich bin froh, dass es dir Shashank geholfen hat. Glückliche Kodierung! – Rads

Verwandte Themen