【问题标题】:Django error in Heroku: "Please supply the ENGINE value"Heroku 中的 Django 错误:“请提供 ENGINE 值”
【发布时间】:2012-08-03 07:24:30
【问题描述】:

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

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

我阅读了Please supply the ENGINE value Django database configuration“settings.DATABASES is improperly configured” error performing syncdb with django 1.4,但仍然收到相同的错误。执行时

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

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

Django 的版本是 1.4。

【问题讨论】:

标签: python django 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}

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

【讨论】:

  • 谢谢伙计,这拯救了我的一天。从 2 小时开始就一直在努力解决这个问题。
【解决方案2】:

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

我添加了第二行,它起作用了

DATABASES['default'] = dj_database_url.config() <--- heroko docs says this is enough
DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2' <---- add this

【讨论】:

  • 这就是我所要做的。我想知道这是否是 Django 1.5 的必要更改;我以前不必这样做。我还必须在这两行前面加上 DATABASES = {}
  • 执行此操作后,我收到一个新错误:要求我提供 NAME。好像 dj_database_url.config() 没有提供需要的......
  • @GreenAsJade 我遇到了同样的问题!你解决了吗?
  • @Constantine 这是不久前的事了,但我记得最好,我对阅读的内容感到困惑:启动 django 的方式有很多,而且它们似乎有不同的效果。我现在如何在我的配置中使用该行,并从工头开始,它可以工作。我有一条评论说“#if foreman 没有读取 .env 文件 #DATABASES['default'] = dj_database_url.config(default = 'postgres://user:@localhost/user')”HTH
【解决方案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

【讨论】:

  • pg:promote 行的末尾可能有不同的颜色 - 我的是 ORANGE,我也见过 RED
【解决方案4】:

自己解决了:在 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

【讨论】:

    【解决方案5】:

    尝试不同的顺序:

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

    manage.py 命令如下所示:

    manage.py <command> <options>
    

    但你是这样使用它的:

    manage.py <options> <command>
    

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

    【讨论】:

    【解决方案6】:

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

    它会正常工作

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

    例子:

    if socket.gethostname() == 'xx':
        DATABASE_SETTINGS ={ }
    
    elif socket.gethostname() == 'xxx':
        another database settings...
    

    这样您就可以在多个主机下运行您的项目。

    【讨论】:

      猜你喜欢
      • 2017-10-20
      • 2012-07-12
      • 2012-04-08
      • 2013-01-08
      • 1970-01-01
      • 2015-09-29
      • 2013-01-23
      • 2013-11-28
      • 2017-04-21
      相关资源
      最近更新 更多