Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Problems with syncdb after creating Heroku Django app

I'm setting up a Django app on Heroku using the https://devcenter.heroku.com/articles/django tutorial and I'm running into the below error running heroku run python manage.py syncdb

ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.

I get the same error when syncing locally. I've read all the threads on StackOverflow but nothing has solved this issue. Relevant parts of settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '',                      # Or path to database file if using sqlite3.
        # The following settings are not used with sqlite3:
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}


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

# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

# Allow all host headers
ALLOWED_HOSTS = ['*']

# Static asset configuration
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
like image 676
Suraj Kapoor Avatar asked Feb 15 '23 16:02

Suraj Kapoor


1 Answers

I'm not sure why the tutorial glosses over this - I've seen similar question crop up frequently - but here are the steps I've taken that resolved the issue. It's worth reading the Postgres documentation as well - https://devcenter.heroku.com/articles/heroku-postgresql

1) Create a Postgres DB using heroku addons | grep POSTGRES in terminal

2) Connect the DB to the app - heroku addons:add heroku-postgresql:dev

3) Promote the URL to Database URL: heroku pg:promote HEROKU_POSTGRESQL_RED_URL

4) Add this into your settings.py:

DATABASES['default'] = dj_database_url.config(default=os.environ.get('DATABASE_URL'))

like image 171
Suraj Kapoor Avatar answered Feb 23 '23 06:02

Suraj Kapoor