Django 迁移 - django.db.migrations.exceptions.NodeNotFoundError

Jaa*_*cob 7 python migration django manage.py

运行任何 python manage.py 函数时出现以下错误:

raise NodeNotFoundError(self.error_message, self.key, origin=self.origin) django.db.migrations.exceptions.NodeNotFoundError: Migration auth.0010_user_following dependencies reference nonexistent parent node ('accounts', '0002_auto_20180615_2021')

它发生在我尝试通过手动删除迁移文件夹中的迁移文件来重置迁移之后(init文件除外-迁移文件夹中没有其他文件)。

我试过用 python manage.py flush 删除数据库,它也没有运行。

有什么建议?谢谢!

解决方案: 经过一周的谷歌搜索,我最终使用文档手动重建了引用的迁移文件:https : //docs.djangoproject.com/en/2.0/howto/writing-migrations/

之后, manage.py migrate 和 makemigration 功能再次工作。切勿在未先备份的情况下删除迁移文件!

rya*_*bin 3

不幸的是,手动删除迁移不会重置它们。数据库知道已运行哪些迁移,并且您看到的错误来自 Django 尝试检查模型模块中模型的状态是否与已运行的迁移的状态匹配(也就是说,是否或不是您需要创建匹配的迁移)以及是否存在已创建但未运行的迁移 - 这些情况会产生警告。在尝试检查这些内容时,它尝试加载迁移但找不到任何内容。

如果您想重置迁移,并且每个应用程序只需进行一次迁移即可一步从空数据库迁移到当前架构,我建议使用squash 迁移命令。不过,您需要先恢复迁移文件。

或者,如果您确实想要完全删除并重新创建数据库,则需要在管理命令之外执行此操作,因为这些命令在运行时会执行上述检查。然后,您可以拥有一个空数据库并运行./manage.py makemigrations,您将获得代表模型原样的初始迁移。