Django压缩了迁移:NodeNotFoundError

Seá*_*yes 7 python django database-migration

运行Django 1.8.9.

我只是压缩了3个应用程序的迁移并进行了部署.什么./manage.py migrate时候运行,我得到了这个:

django.db.migrations.graph.NodeNotFoundError: Migration app2.0001_squashed_0019 dependencies reference nonexistent parent node (u'app1', u'0001_squashed_0028')
Run Code Online (Sandbox Code Playgroud)

app1.0001_squashed_0028但是,磁盘存在于磁盘上,正在替换迁移.Django迁移系统应该具有向前迁移所需的所有信息.

我能够通过以下方式解决这个问题:

  1. 重命名这依赖于两个新的挤压迁移app1.0001_squashed_0028*.bak,
  2. 运行迁移,
  3. 然后重命名*.bak文件,
  4. 并重新运行迁移.

迁移在本地和分阶段工作得很好,所以我猜测发生这种情况的原因是因为生产还没有及时更新预先迁移的迁移.

我找到了几张与挤压相关的问题门票,但我不确定是否有任何相同的问题.有谁知道这是一个已知的问题?我做错了什么/是否有更好的方法可以防止这种情况发生?

big*_*ose 0

您对错误消息表示困惑,因为:

不过,app1.0001_squashed_0028 存在于磁盘上,迁移也被替换了。Django 迁移系统应该拥有向前迁移所需的所有信息。

不过,您是否在磁盘上看到文件并不确定。要了解 Django 了解项目的哪些迁移,请使用管理命令showmigrations

如果您期望的迁移甚至没有列出,那么这就是 Django 声称未找到迁移的原因。