尝试设置 Django 时出现 ImproperlyConfigured("settings.DATABASES 配置不正确。") 错误
Posted
技术标签:
【中文标题】尝试设置 Django 时出现 ImproperlyConfigured("settings.DATABASES 配置不正确。") 错误【英文标题】:ImproperlyConfigured("settings.DATABASES is improperly configured. ") error when trying to set up Django 【发布时间】:2013-01-25 14:11:50 【问题描述】:尝试按照说明 here 在 Heroku 上设置 Django 实例。
至于安装Celery,到以下步骤:
$ python manage.py syncdb
当我收到以下错误时:
raise 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':'','HOST':'','USER':'','TEST_NAME':无,'PASSWORD':'', “选项”:
完全不知道django.db.backends.dummy
条目来自哪里,我的settings.py
有'ENGINE': 'django.db.backends.postgresql_psycopg2'
,我认为这是正确的条目,即使Heroku 说明没有告诉您随时更新它。
有什么想法我需要在这里编辑吗?
【问题讨论】:
您的设置代码在哪里? 【参考方案1】:我遇到了同样的问题。在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
这解决了我的问题。我希望它可以帮助其他有类似问题的人。
【讨论】:
我如何确定您发布的内容中的“dbname”? 您可以在 https://postgres.heroku.com/databases -> your_database -> URL show 下获取数据库 url,然后您可以使用该 url 作为默认值。确保在进一步的数据库操作之前运行python manage.py migrate
【参考方案2】:
尝试在 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')
【讨论】:
实际上这很接近,我的设置文件中有#import dj_database_url / #DATABASES['default'] = dj_database_url.config()
以及对djcelery 的setup_loader()
调用。现在注释掉这两行会给我一个django.core.exceptions.ImproperlyConfigured: You need to specify NAME in your Django settings file.
错误。
太棒了!您是否知道在 dj_url_config() 中添加默认参数会使您的设置在本地环境中可用?这样您就不必再为 db 设置而烦恼了。快乐编码:)【参考方案3】:
非常感谢 Chatri,因为您建议添加 default='sqlite://db/sqlite3.db' 解决了这个问题。
【讨论】:
感谢@Rads 提及。解决了我的问题 我很高兴它确实帮助了你 Shashank。编码愉快!以上是关于尝试设置 Django 时出现 ImproperlyConfigured("settings.DATABASES 配置不正确。") 错误的主要内容,如果未能解决你的问题,请参考以下文章