10

我阅读并应用了“Heroku 上的 Django 入门”教程,但在同步 db 时遇到了问题:

raise ImproperlyConfigured("settings.DATABASES is improperly configured." 
django.core.exceptions.ImproperlyConfigured: 
settings.DATABASES is improperly configured. Please supply the ENGINE value. 

我阅读了请提供 ENGINE 值 Django 数据库配置“settings.DATABASES 配置不正确”错误,使用 django 1.4 执行 syncdb但仍然收到相同的错误。执行时

heroku run python manage.py --settings=moz455.settings syncdb

我收到错误“未知命令:'--settings=moz455.settings'”。如何解决这个问题呢?

Django 的版本是 1.4。

4

6 回答 6

12

我遇到了同样的问题,但显然是出于不同的原因。在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:55:36.953 回答
8

在此处尝试所有答案并验证 DATABASE_URL 存在后,没有任何效果。

我添加了第二行并且它有效

DATABASES['default'] = dj_database_url.config() <--- heroko docs says this is enough
DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2' <---- add this
于 2013-07-26T08:38:59.717 回答
3

确保您已正确安装和设置数据库插件。请参阅https://devcenter.heroku.com/articles/database#no-dev-database-or-no-database-url

我运行以下命令来解决这个问题:

heroku addons:add heroku-postgresql
heroku pg:promote HEROKU_POSTGRESQL_CYAN
于 2012-11-10T17:25:04.150 回答
1

自己解决了:在 manage.py 添加类似这样的代码:

CurDir = os.path.dirname(os.path.abspath(__file__))
ProjectDir = os.path.join(CurDir, "moz455")
sys.path += [ProjectDir]

并使用以下命令提交更改:

git add -A
git commit -m "commit"
git push -f heroku
于 2012-08-06T12:37:12.277 回答
0

尝试不同的顺序:

heroku run python manage.py syncdb --settings=moz455.settings

manage.py 命令如下所示:

manage.py <command> <options>

但你像这样使用它:

manage.py <options> <command>

您的其他问题(缺少 ENGINE 设置)可能是由于在 syncdb 命令执行期间使用了不正确的设置文件。以上也应该解决它。

于 2012-08-06T10:40:51.283 回答
0

有点晚了;但是您只需删除所有默认的 django 数据库设置行;并添加heroku的。

它会正常工作

** 编辑 ** 或者你可以简单地使用`socket.gethostname()。

例子 :

if socket.gethostname() == 'xx':
    DATABASE_SETTINGS ={ }

elif socket.gethostname() == 'xxx':
    another database settings...

因此您可以在多个主机下运行您的项目。

于 2012-09-24T20:44:48.910 回答