django.db.migrations.exceptions.NodeNotFoundError

时间:2016-06-21 06:49:38

标签: python django

当我运行makemigrations命令时,我收到此错误:

Traceback (most recent call last):
 ...
django.db.migrations.exceptions.NodeNotFoundError: Migration products.0002_auto_20160618_1143 dependencies reference nonexistent parent node (u'products', u'0001_initial')

6 个答案:

答案 0 :(得分:11)

如果您打开迁移文件products.0002_auto_20160618_1143,您将看到一个名为dependencies的部分:

dependencies = [("products", "0001_initial")]

看起来像这样。这行告诉Django当前文件依赖于该文件。给出该错误消息的文件不在那里。您可以尝试注释掉该行并再次运行该命令。请注意,如果缺少一个文件,可能会丢失许多文件,因此您应该将依赖项与实际文件中的文件进行协调。

免责声明:如果这是一个生产数据库,如果您不知道自己在做什么,那么迁移文件会很危险。您应该首先在暂存或开发服务器上测试它(最好是具有可以恢复到的快照的服务器)。

答案 1 :(得分:2)

如果重置迁移后仍无法解决,请执行以下步骤: 显然,django将迁移文件保留在其自己的模块文件夹中。这就是为什么您需要冲洗Django的原因:

  1. pip卸载Django。
  2. / Lib / site-packages,已删除的django文件夹。
  3. 删除了我项目中的所有* .pyc文件。
  4. 删除我项目中的所有 pycache 文件夹。
  5. 清除了我项目中的所有迁移文件夹(保留 init .py)。
  6. pip install django == x.x.x。
  7. python manage.py迁移。
  8. python manage.py makemigrations
  9. python manage.py迁移。
  10. python manage.py运行服务器。 现在您的问题将得到解决。

答案 2 :(得分:0)

如果数据库中没有任何重要数据,则只需重置迁移即可,如here所述。

答案 3 :(得分:0)

如果在0002_auto_20160618_1143命令创建的文件中悬挂了对makemigrations的依赖关系,而该文件不存在,则请从该文件中删除此引用。请记住,也要从django_migrations表中删除迁移。这解决了我的问题

dependencies = [
    ('workspace', '0002_auto_20160618_1143'),
    ('datasets', '0001_initial'),
]

答案 4 :(得分:0)

如果您最近删除了一个应用并尝试进行迁移。然后更好: 删除文件product.0002_auto_20160618_1143迁移文件。 并再次运行以下命令:

1.python manage.py makemigrations。 2.python manage.py迁移删除

您也可以关注获得最高评价的评论。但是请注释依赖项中新删除的应用程序名称。不要评论整个依赖项。

答案 5 :(得分:-1)

删除文件product.0002_auto_20160618_1143迁移文件。
并再次运行以下命令:

1. python manage.py makemigrations
2. python manage.py migration