Django 迁移在本地工作但不在 Elastic Beanstalk 生产上工作

Django migrate work on local but not on Elastic Beanstalk production

我正在开发一个已经运行了几个月的 django 项目。设置文件或环境本身没有更改。

我最近向模型添加了一个字段,但是当我将它部署到我的 Amazon Elastic Beanstalk 环境时,它无法将更改迁移到数据库。我收到以下错误消息:

Synchronizing apps without migrations:
    Creating tables...
        Running deferred SQL...
    Installing custom SQL...
Running migrations:
    No migrations to apply.
    Your models have changes that are not yet reflected in a migration, and so won't be applied.
    Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.

现在错误消息可能听起来很明显,但问题是我将数据库从生产服务器复制到我的本地数据库服务器并再次尝试 migrate 命令,瞧,在本地工作。没有关于正在更改的模型的错误消息。

当我 运行 makemigrations 我得到 No changes detected.。我还为项目中的每个应用程序尝试了 makemigrations <app>。还是说 No changes detected.

总结一下:

我对模型进行了更改,对其进行了新的迁移,我尝试将其迁移到生产服务器上,但结果出错。我在本地服务器上尝试使用数据库的精确副本,它工作正常。

想法?

编辑:

这似乎与ImageField有关。我添加到模型中的字段是 ImageField,但是当我删除它,然后测试添加 CharFieldFileField 时,迁移工作正常。

当我修改 FileField 并将其变成 ImageField 时,返回 migrate 错误。

非常混乱。

通过在 Amazon 完全重建我的环境并将我的本地版本的数据库导入新的 RDS/MYSQL 实例,我能够解决这个问题。

这不是 "proper" 解决方案,因为它实际上并没有找出发生这种情况的原因。我同步并重新同步了我的数据库数十次。我回到了一个成功同步的迁移文件,但是当我再次将我的 ImageField 添加到我的模型时,我在尝试 manage.py migrate.

时遇到了同样的错误

重建环境迁移后再次工作。