(我知道有一个与此标题相同的标题,但问题有所不同)。
我设法使开发机器迁移和生产迁移不同步。
我有一个使用South的Django应用。我有自己的工作流程,效果很好(这可能不是正确的处理方式,但我没有任何问题)。
基本上,我有一个脚本,可将生产数据库转储复制到我的开发计算机上。它还复制了迁移文件。这样,两者就可以同步了,我可以像往常一样运行South命令。
现在,我已升级到1.7,并开始使用迁移。当我使用以前的工作流程(从生产环境复制数据库转储和迁移文件)时,它没有检测到开发计算机上的更改。
我已经阅读了迁移文档,并且看到使用它的正确方法是:
反正。现在都一团糟。我想“重置”我的迁移并从头开始,从现在开始做正确的事情。
我需要做什么?
我错过了什么吗?为什么从生产中复制所有内容(数据库和迁移文件)之后没有检测到我的开发机器上的任何更改,这是有原因的吗
我将在两种环境中都执行以下操作(只要代码相同)
<your app name>
。你也可以截断该表。python manage.py makemigrations
python manage.py migrate --fake
在此之后,所有更改都将在环境中检测到。
这听起来或多或少像我最后所做的。我试着删除(实际上是重命名django_migrations表)。然后,我发现一些应用程序迁移依赖于其他应用程序,因此我在新的django_migrations表中重新填充了这些条目。
我已经看到了很多类似问题的答案,这使问题变得比实际需要的更为复杂。这是做到这一点的方法。干净简单。
现在Django将不会检测到任何新的更改;即添加一张桌子。有任何想法吗?
我这样做了,但是就像Turtles Are Cute一样,不断收到“未检测到更改”(Django 1.10)。解决方案是运行
makemigrations
指定应用程序。例如,python manage.py makemigrations polls
如果您的应用程序被调用polls
。python manage.py flush --no-input
避免在输入“是”后继续执行任何操作