【问题标题】:Django squashed migrations: NodeNotFoundErrorDjango 压缩迁移:NodeNotFoundError
【发布时间】:2016-06-14 23:52:43
【问题描述】:

运行 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')

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

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

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

迁移在本地和暂存中运行良好,所以我猜测发生这种情况的原因是因为生产尚未与预先压缩的迁移保持同步。

我发现了几个与 squashing 相关的问题单,但我不确定它们中的任何一个是针对同一个错误的。任何人都知道这是否是一个已知问题?我是不是做错了什么/有没有更好的方法来防止这种情况发生?

【问题讨论】:

    标签: python django database-migration


    【解决方案1】:

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

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

    不过,您是否在磁盘上看到文件并不确定。要了解 Django 了解的项目迁移,请使用 management command showmigrations。

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

    【讨论】:

      猜你喜欢
      • 2016-02-14
      • 2015-08-26
      • 2015-09-25
      • 2015-11-12
      • 2021-01-13
      • 2017-02-23
      • 2016-10-09
      • 2015-08-18
      • 1970-01-01
      相关资源
      最近更新 更多