设置Django时出现"ImproperlyConfigured(“settings.DATABASES配置不正确。”)"错误
我正在尝试按照这里的说明,在Heroku上设置一个Django实例。
我已经安装了Celery,接下来要进行的步骤是:
$ python manage.py syncdb
但是我遇到了以下错误:
raise ImproperlyConfigured("settings.DATABASES配置不正确。 "django.core.exceptions.ImproperlyConfigured: settings.DATABASES配置不正确。请提供ENGINE值。有关更多详细信息,请查看设置文档。
我相信我的settings.py
文件放在正确的位置(项目名称/项目名称)
,而且我正在使用django 1.4.3,但当我尝试运行manage.py diffsettings
时,输出如下:
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': {}}}
我完全不知道django.db.backends.dummy
这个条目是从哪里来的,我的settings.py
里有'ENGINE': 'django.db.backends.postgresql_psycopg2'
,我认为这个是正确的,尽管Heroku的说明没有告诉我在任何时候需要更新它。
有没有人能告诉我我需要在这里编辑什么?
3 个回答
非常感谢你,Chatri,正如你所建议的,添加默认值='sqlite://db/sqlite3.db' 解决了这个问题。
在你的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')
我遇到了同样的问题。在Heroku的文档中,地址是 https://devcenter.heroku.com/articles/django#prerequisites,上面说要在 settings.py
文件中添加以下内容:
DATABASES['default'] = dj_database_url.config()
你可以传入一个参数:
DATABASES['default'] = dj_database_url.config(default='postgres://user:pass@localhost/dbname')
这样就可以在本地和Heroku上进行开发了。不过,真正解决我问题的部分是Heroku的配置环境变量DATABASE_URL其实并没有设置。为了设置这个变量,我运行了:
$ heroku config
我发现数据库的URL被分配给了一个单独的配置变量。所以我创建了一个新的变量:
$ heroko config:add DATABASE_URL={#the database url}
这解决了我的问题。希望对其他遇到类似问题的人也有帮助。