我正在研究一个已经存活数月的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
命令,Voila在本地工作。没有关于模型被更改的错误消息。
当我运行makemigrations
时,我得到No changes detected.
。我还为项目中的每个应用程序尝试了makemigrations <app>
。仍然说No changes detected
。
总结如下:
我对模型进行了更改,我对其进行了新的迁移,我尝试在生产服务器上迁移它,结果是错误的。我尝试使用数据库的精确副本在本地服务器上运行,并且工作正常。
想法?
编辑:
这似乎与ImageField
有关。我添加到模型中的字段是ImageField
,但是当我删除它,然后测试添加CharField
和FileField
时,迁移工作正常。
当我修改FileField
并将其变为ImageField
时,返回migrate
错误。
非常混乱。
答案 0 :(得分:0)
我能够通过在Amazon完全重建我的环境并将我的本地数据库版本导入到新的RDS / MYSQL实例来解决这个问题。
这不是&#34;正确的&#34;解决方案,因为它实际上没有找到为什么会发生这种情况。我同步并重新同步了数十次数据库。我回到了成功同步的迁移文件,但是当我再次将ImageField
添加到我的模型时,我尝试manage.py migrate
时遇到了同样的错误。
重建环境后,迁移工作再次开始。