尝试设置 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 配置不正确。") 错误的主要内容,如果未能解决你的问题,请参考以下文章

Django:安装 requirements.txt 时出现 distutils 错误

运行 make 迁移时出现 Django 关系错误

在 django 开发中加载静态文件时出现 404 错误

在 Django 模板中获取图像时出现代码 404

尝试注销 django 时出现运行时错误

尝试将 Django 与 Apache 集成时出现 ServerSelectionTimeoutError