ElasticBeanstalk Django:请提供 ENGINE 值

Posted

技术标签:

【中文标题】ElasticBeanstalk Django:请提供 ENGINE 值【英文标题】:ElasticBeanstalk Django: Please supply ENGINE value 【发布时间】:2017-10-20 18:22:50 【问题描述】:

我正在尝试使用 ElasticBeanstalk 安装 Django 应用程序。除了settings.DATABASES is improperly configured. Please supply the ENGINE value

,它失败了

完全错误:

Command failed on instance. Return code: 1 Output: (TRUNCATED)... in 
complain raise ImproperlyConfigured("settings.DATABASES is improperly
configured. " django.core.exceptions.ImproperlyConfigured: 
settings.DATABASES is improperly configured. Please supply the ENGINE value.
Check settings documentation for more details. 
container_command 01_migrate in .ebextensions/15_my.config failed. For more 
detail, check /var/log/eb-activity.log using console or EB CLI.`

我在执行我的一个命令时收到此错误:

01_migrate:
command: "source /opt/python/run/venv/bin/activate && python manage.py migrate --noinput"
leader_only: True

这是我的 config/settings/production.py

DATABASES = 
'default': 
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'ebdb',
    'USER': 'djangousername',
    'PASSWORD': 'djangopassword',
    'HOST': env('RDS_HOSTNAME'),
    'PORT': '5432'


我有点确定 EB 仅从该文件中选择配置,而不是从任何其他文件中选择配置,因为如果我更改此文件中的某些内容,它会在 ElasticBeanstalk 环境创建时反映出来。我还在整个应用程序中搜索了 DATABASES 仅在此文件中提及,即 <app-rot>/config/settings/production.py<app-root>/config/settings/local.py。在这两个地方,我都提供了上面的ENGINE 值。

如果我需要添加任何其他相关信息,请告诉我

【问题讨论】:

但是你如何告诉 Django 查看设置/生产? 【参考方案1】:

这让我花了很长时间才弄明白(与 Django 和 EB 的大多数事情一样)。我认为您在控制台中设置的环境变量优先于您在其他任何地方设置的变量或设置,例如.ebextensions。

在我的情况下,错误是因为我的设置文件在我的 ebextensions 中设置正确,但在控制台变量中设置不正确。感谢@daniel 的提示

【讨论】:

以上是关于ElasticBeanstalk Django:请提供 ENGINE 值的主要内容,如果未能解决你的问题,请参考以下文章

Django ElasticBeanstalk 更改存储桶

在 AWS Elasticbeanstalk 上部署 Django

Django manage.py 命令在 ElasticBeanstalk 上有 SyntaxError

在 Elasticbeanstalk Docker 环境中提供 Django 静态文件

由于 ImportError,Celery Django 部署因 Elastic Beanstalk 失败:无法导入名称“Celery”(ElasticBeanstalk::ExternalInvoc

在 ElasticBeanstalk 配置中设置 Python WSGIDaemon --maximum-requests 值