当我运行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')
答案 0 :(得分:11)
如果您打开迁移文件products.0002_auto_20160618_1143
,您将看到一个名为dependencies的部分:
dependencies = [("products", "0001_initial")]
看起来像这样。这行告诉Django当前文件依赖于该文件。给出该错误消息的文件不在那里。您可以尝试注释掉该行并再次运行该命令。请注意,如果缺少一个文件,可能会丢失许多文件,因此您应该将依赖项与实际文件中的文件进行协调。
免责声明:如果这是一个生产数据库,如果您不知道自己在做什么,那么迁移文件会很危险。您应该首先在暂存或开发服务器上测试它(最好是具有可以恢复到的快照的服务器)。
答案 1 :(得分:2)
如果重置迁移后仍无法解决,请执行以下步骤: 显然,django将迁移文件保留在其自己的模块文件夹中。这就是为什么您需要冲洗Django的原因:
答案 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 。