Django:依赖项引用不存在的父节点

NIK*_*ANE 30 python django migrate

当我运行以下命令

python manage.py migrate
Run Code Online (Sandbox Code Playgroud)

我从django收到这个错误,所以不能在我的练习中前进:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/nikhil/testWeb-devEnv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/home/nikhil/testWeb-devEnv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/nikhil/testWeb-devEnv/local/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/nikhil/testWeb-devEnv/local/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute
    output = self.handle(*args, **options)
  File "/home/nikhil/testWeb-devEnv/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 63, in handle
    executor = MigrationExecutor(connection, self.migration_progress_callback)
  File "/home/nikhil/testWeb-devEnv/local/lib/python2.7/site-packages/django/db/migrations/executor.py", line 17, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/home/nikhil/testWeb-devEnv/local/lib/python2.7/site-packages/django/db/migrations/loader.py", line 48, in __init__
    self.build_graph()
  File "/home/nikhil/testWeb-devEnv/local/lib/python2.7/site-packages/django/db/migrations/loader.py", line 241, in build_graph
    self.graph.add_dependency(migration, key, parent)
  File "/home/nikhil/testWeb-devEnv/local/lib/python2.7/site-packages/django/db/migrations/graph.py", line 42, in add_dependency
    raise KeyError("Migration %s dependencies reference nonexistent parent node %r" % (migration, parent))
KeyError: u"Migration testBolt.0001_initial dependencies reference nonexistent parent node (u'delivery_boy', u'0004_auto_20150221_2011')"
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

NIK*_*ANE 21

解决方案 - 1

从迁移文件夹中删除pyc文件.

解决方案 - 2

需要通过编辑迁移文件从testBolt.0001_initial中删除该引用.

解决方案 - 3

  1. 从模态中删除新更改并运行 python manage.py migrate --fake

  2. 现在再次使用新更改修改模型

  3. python manage.py makemigrations

  4. 然后又跑了 python manage.py migrate

  • 如果删除 pyc 文件可以解决问题,您应该将其作为第一选择。如果没有帮助,请继续使用其他建议的解决方案。所以我建议在这里重新排序解决方案。 (4认同)

Chr*_*ong 9

就我而言,我.py在依赖模块名称中有扩展名,如下所示:

dependencies = [
    ('dashboard', '0003_auto_20181024_0603.py'),
    ('auth', '__latest__'),
    ('contenttypes', '__latest__'),
]
Run Code Online (Sandbox Code Playgroud)

我删除了.py,将其更改为

    ('dashboard', '0003_auto_20181024_0603')
Run Code Online (Sandbox Code Playgroud)

并修复了它。


小智 7

这对我有用 在您的应用程序迁移文件夹中

  1. 删除应用程序文件夹中的所有文件 pyc(除了__init__
  2. 删除迁移中的所有文件(除了__init__

  3. python manage.py makemigrations

  4. python manage.py migrate
  5. runserver

  • 警告:不要在生产中或任何需要在数据库表中保存记录的环境中执行此操作。如果您只是在本地主机上闲逛,那也没关系。 (2认同)

小智 5

我有一个类似的案例,在虚拟环境中的 Windows 中运行 django。在我的情况下,缺少的依赖项是 0001_initial - 它肯定在迁移文件夹中。

“解决方案”是删除 pyc 文件并进行另一次迁移尝试。


Tit*_*ter 5

我有同样的问题。就我而言,由于我是手动进行迁移的,因此我忘记__init__.pymigrations文件夹内部创建。


Sac*_*hin 5

这对我来说是这样的:

  1. 删除了每个应用程序内的所有__pycache__文件夹。
  2. 删除了迁移文件夹内的所有文件(__init.py__每个应用程序文件夹内除外)。
  3. python manage.py makemigrations
  4. python manage.py migrate
  5. python manage.py runserver