Django:中断的迁移

Django: broken migrations

我正在尝试在一台新机器上本地设置一个 Django 应用程序,但迁移似乎完全失败了。它们需要按特定顺序执行,这在几个月前我设置环境的第一台机器上工作,但现在存在不一致(尽管我很确定没有生成新的迁移)。

所以我能想到的唯一解决方案是将数据库从正在工作的旧机器导出到新机器。那行得通吗?

这不会解决中断的迁移问题,但至少我可以处理代码直到找到合适的解决方案。

回答这个问题:

So the only solution I can think of is exporting the database from the old machine, where it is working, to the new one. Would that work?

是的,如果您确定您的数据库与您的模型同步,这就可以工作。如果您想为更新生产环境做好最好的准备,这实际上是可行的方法。

  1. 从当前生产机器获取转储
  2. 创建新数据库并加载转储
  3. 检查模型和迁移历史之间是否存在差异(这对于新的 Django 迁移更可靠,South 是一个外部工具,并没有所有的可能性)(例如 ./manage.py showmigrations(1.10 ), ./manage.py migrate --list(1.7-1.9 和南方)
  4. 如果您确信没有迁移必须 运行 但列表显示差异,那么请执行:./manage.py migrate --fake

请注意,在较新的版本中,您可以 ./manage.py migrate 如果模型和迁移同步,它会报告一切正常。这可以是部署到生产环境之前的完整性检查。