8

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

就安装 Celery 而言,到以下步骤:

$ python manage.py syncdb

当我收到以下错误时:

raise ImproperlyConfigured("settings.DATABASES 配置不正确。"django.core.exceptions.ImproperlyConfigured: settings.DATABASES 配置不正确。请提供 ENGINE 值。查看设置文档以获取更多详细信息。

我相信我的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': None, 'NAME': '', 'TEST_CHARSET': None, ' TIME_ZONE':'UTC','TEST_COLLATION':无,'PORT':'','HOST':'','USER':'','TEST_NAME':无,'PASSWORD':'','OPTIONS' :{}}}

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

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

4

3 回答 3

9

我遇到了同样的问题。在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}

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

于 2013-04-10T23:58:47.887 回答
7

尝试在 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')
于 2013-02-10T08:05:03.817 回答
1

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

于 2014-02-08T13:12:42.587 回答