使用 RDS 在 Elastic Beanstalk 上的 Django 中向现有模型添加新字段时出错

Error when adding new field to existing model in Django on Elastic Beanstalk using RDS

当我尝试向 Django 中的现有模型添加新字段时出现错误。它使用 MySQL RDS 数据库托管在 elastic beanstalk 上。

这是我尝试访问包含新字段的模型时的错误:

(1054, "Unknown column 'existing_model.new_field' in 'field list'")

有没有更好的方法来处理 EB 上 Django 中的迁移?这是我的 .config 文件:

container_commands:
  01_makemigrations:
    command: "source /opt/python/run/venv/bin/activate && python manage.py makemigrations --noinput"
    leader_only: true
  02_migrate:
    command: "source /opt/python/run/venv/bin/activate && python manage.py migrate --noinput"
    leader_only: true
  03_createsu:
    command: "source /opt/python/run/venv/bin/activate && python manage.py createsu"
    leader_only: true
  04_collectstatic:
    command: "source /opt/python/run/venv/bin/activate && python manage.py collectstatic --noinput"

有什么帮助吗?谢谢!

原来我必须在 eb deploy 之前在本地 运行 python manage.py makemigrations。这样,迁移文件就创建好了,当 eb 实例上的 migrate 为 运行 时,它知道如何相应地更改数据库。

我的 .config 文件现在是:

container_commands:
  01_migrate:
    command: "source /opt/python/run/venv/bin/activate && python manage.py migrate --noinput"
    leader_only: true
  02_createsu:
    command: "source /opt/python/run/venv/bin/activate && python manage.py createsu"
    leader_only: true
  03_collectstatic:
    command: "source /opt/python/run/venv/bin/activate && python manage.py collectstatic --noinput"