【问题标题】:AWS Django Elastic Beanstalk migration errorAWS Django Elastic Beanstalk 迁移错误
【发布时间】:2021-02-03 19:18:30
【问题描述】:

背景

我使用 Django 创建了一个网站,并将其部署在带有 MySQL Amazon RDS 数据库的 AWS EB 上。最近,我在models.py 文件中的一个现有模型中添加了一个新字段。在我的本地服务器上一切正常(使用本地 SQLite,而不是 RDS),但是当我将新更新部署到 EB 时,当我访问任何页面时都会收到以下错误:

OperationalError at /
(1054, "Unknown column 'old_model.new_field' in 'field list'")

问题

我做错了什么来得到上述错误,我可以做些什么来解决它?

db-migrate.config:

container_commands:
  01_migrate:
    command: "django-admin.py migrate"
    leader_only: true
option_settings:
  aws:elasticbeanstalk:application:environment:
    DJANGO_SETTINGS_MODULE: app.settings

【问题讨论】:

  • EB 是否进行过任何迁移?
  • 我不确定你的意思。当我部署它时,它会自动运行django-admin.py migrate
  • 通常你会使用manage.py migrate,即使你认为它正在运行,你知道它已经运行了吗?听起来它是第一次运行,因为您谈到访问网站上的页面,但由于该错误,它无法应用最新的迁移。
  • 我认为它正在运行,因为我尝试添加一些在部署期间出错的额外命令。但我不知道它正在运行,所以如果它不是我该怎么做才能让它运行?

标签: mysql django database amazon-web-services amazon-elastic-beanstalk


【解决方案1】:

使用python manage.py makemigrations 创建手动迁移,如果在模型中未发现任何新更改,请尝试使用您的应用名称进行相同操作,然后使用python manage.py migrate 迁移数据库

这应该可以解决您的问题。如果这不能解决您的问题,请清除所有迁移文件,然后再次运行makemigrations

【讨论】:

  • 没有骰子。我尝试运行python manage.py makemigrations,然后运行python manage.py migrate。我还在 db-migrate.config 中将 django-admin.py migrate 更改为 python manage.py migrate。然后我运行eb deploy 重新部署站点,但错误仍然存​​在。
  • 您是否删除了以前的迁移?确保删除迁移文件。然后尝试 makemigrations 并迁移。
  • 是的,我有,剩下的就是 init.py。
  • 这种情况只发生在豆茎里吗,本地呢?
  • 本地服务器工作正常,但它使用本地 SQLite DB 而不是生产服务器使用的 MySQL RDS DB。
【解决方案2】:
  • 我怀疑迁移运行不正常。
  • 创建一个 EC2 实例并尝试在它连接到 RDS 而不是本地 sqlite DB 上运行迁移。
  • 确保您的 EC2 实例和 RDS 在同一个 VPC 上。
  • 然后将您的应用部署到 EB。

【讨论】:

  • 这应该可以解决您的问题。如果这不能解决您的问题,请在此处讨论。
猜你喜欢
  • 2020-09-21
  • 2015-06-14
  • 2014-03-10
  • 2015-11-05
  • 1970-01-01
  • 2020-02-19
  • 2017-01-22
  • 2021-11-26
  • 2021-05-21
相关资源
最近更新 更多