尝试设置Django时,配置不正确(“settings.DATABASES配置不正确。”)错误

时间:2013-02-10 07:57:21

标签: python sql django heroku celery

尝试按照here的说明在Heroku上设置Django实例。

直到安装Celery,直到以下步骤:

$ python manage.py syncdb

当我收到以下错误时:

  

提高ImproperlyConfigured(“settings.DATABASES不正确   配置。 “django.core.exceptions.ImproperlyConfigured:   settings.DATABASES配置不正确。请提供发动机   值。检查设置文档以获取更多详细信息。

我相信我的settings.py文件位于正确的地方(project-name/project-name),我正在运行django 1.4.3,但当我尝试运行manage.py diffsettings时,我得到了以下输出:

  

BROKER_BACKEND ='django'### DATABASES = {'default':{'ENGINE':   'django.db.backends.dummy','TEST_MIRROR':无,'NAME':'',   'TEST_CHARSET':无,'TIME_ZONE':'UTC','TEST_COLLATION':无,   'PORT':'','主持人':'','用户':'','TEST_NAME':没有,'密码':'',   '选项':{}}}

绝对不知道django.db.backends.dummy条目来自何处,我的settings.py'ENGINE': 'django.db.backends.postgresql_psycopg2',我认为这是正确的条目,即使Heroku说明没有告诉您更新它在任何时候。

有什么想法我需要在这里编辑吗?

3 个答案:

答案 0 :(得分:8)

我遇到了同样的问题。在https://devcenter.heroku.com/articles/django#prerequisites的Heroku文档中,它说要将以下内容添加到settings.py

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

您可以传递参数:

DATABASES['default'] =  dj_database_url.config(default='postgres://user:pass@localhost/dbname')

这将允许您在本地和Heroku上进行开发。实际解决我遇到的问题的部分是DATABASE_URL的Heroku配置环境变量实际上没有设置。为了设置这个,我跑了

$ heroku config

我看到数据库URL分配给一个单独的配置变量。所以我创建了一个新变量:

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

这解决了我的问题。我希望它可以帮助其他有类似问题的人。

答案 1 :(得分:6)

尝试在settings.py

中的DATABASE设置后添加这些行
# 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')

答案 2 :(得分:1)

非常感谢Chatri,因为你建议添加default ='sqlite://db/sqlite3.db'修复了这个问题。