【问题标题】:django.db.migrations.exceptions.NodeNotFoundErrordjango.db.migrations.exceptions.NodeNotFoundError
【发布时间】:2016-06-21 06:49:37
【问题描述】:

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

【问题讨论】:

    标签: python django


    【解决方案1】:

    如果你打开迁移文件products.0002_auto_20160618_1143,你会看到一个叫做依赖项的部分:

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

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

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

    【讨论】:

      【解决方案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 运行服务器。 现在您的问题将得到解决。

      【讨论】:

        【解决方案3】:

        如果您的数据库中没有任何重要数据,您可以简单地重置您的迁移,正如 here 所解释的那样。

        【讨论】:

          【解决方案4】:

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

          1.python manage.py makemigrations.
          2.python manage.py migrate.

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              【解决方案6】:

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

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

              您还可以关注评分最高的评论。但是从依赖项中注释新删除的应用程序名称。不要注释整个依赖项。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2018-11-27
                • 2018-10-01
                • 1970-01-01
                • 1970-01-01
                • 2018-08-26
                • 2021-04-20
                • 1970-01-01
                相关资源
                最近更新 更多