Django: зависимости ссылаются на несуществующий родительский узел

Когда я запускаю следующую команду

python manage.py migrate

Я получаю эту ошибку от 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')"

Как решить эту проблему?


person NIKHIL RANE    schedule 23.02.2015    source источник
comment
Итак, у вас есть миграция под названием 0004_auto_20150221_2011 в приложении delivery_boy?   -  person Daniel Roseman    schedule 23.02.2015
comment
В моем приложении delivery_boy нет миграции 0004_auto_20150221_2011.   -  person NIKHIL RANE    schedule 23.02.2015
comment
Тогда это объясняет ошибку. Теперь вам нужно удалить эту ссылку из frshBolt.0001_initial и выяснить, почему у вас вообще есть эта зависимость.   -  person Daniel Roseman    schedule 23.02.2015
comment
@DanielRoseman, не могли бы вы добавить это как ответ, чтобы его можно было принять (и решить вопрос)?   -  person tutuDajuju    schedule 08.06.2015
comment
Из сообщения об ошибке видно, что ошибка вызвана зависимостями frshBolt.0001_initial. Удаление frshBolt.migrations устранило проблему для меня.   -  person SuperNova    schedule 27.11.2015


Ответы (14)


Решение – 1

Удалите файлы pyc из папки миграции.

Решение 2

Необходимо удалить эту ссылку из testBolt.0001_initial, отредактировав файл миграции.

Решение – 3

  1. Удалите новые изменения из моделей и запустите python manage.py migrate --fake

  2. Теперь снова модифицируйте свои модели с новыми изменениями

  3. Беги python manage.py makemigrations

  4. А потом снова запустить python manage.py migrate

person NIKHIL RANE    schedule 21.07.2016
comment
Если удаление файлов pyc может решить проблему, вы должны сделать это в качестве первого варианта. Продолжайте с другими предложенными решениями, если это не помогает. Поэтому я бы предложил изменить порядок решений здесь. - person smido; 10.11.2016
comment
@smido Привет, согласно вашему комментарию, я готов решить. - person NIKHIL RANE; 10.11.2016
comment
Я не уверен, что это лучшее решение или решение, предназначенное для такого типа проблем. Я пришел сюда, потому что у меня есть такая же трассировка, но я не знаю, почему вы получили свою. Я получил свой, потому что хотел изменить имя таблицы и сделал это в ОС. Согласно документам, существует метод, специально разработанный для изменения имен таблиц. docs.djangoproject.com/en/1.8/ref /schema-editor/#alter-db-table . Это причина вашей проблемы? - person Malik A. Rumi; 12.11.2016
comment
Решение 3 спасло мой день. Спасибо друг. - person Kiknaio; 07.07.2019
comment
Пришлось пойти дальше: удалить мои изменения, удалить все файлы миграции (сохранить __init__.py). Запустите makemigrations, чтобы создать начальный. Выполнить makemigations --fake. Добавьте мои изменения, запустите makemigrations и, наконец, migrate. - person Ehvince; 02.06.2020
comment
makemigration не принимает этот аргумент: makemigrations: error: unrecognized arguments: --fake - person Original BBQ Sauce; 11.02.2021

У меня такая же проблема. В моем случае, поскольку я играл с миграциями вручную, я забыл создать __init__.py внутри папки migrations.

person TitanFighter    schedule 06.11.2016

В моем случае у меня было расширение .py в имени модуля зависимостей, например:

dependencies = [
    ('dashboard', '0003_auto_20181024_0603.py'),
    ('auth', '__latest__'),
    ('contenttypes', '__latest__'),
]

Я удалил .py, изменив его на это

    ('dashboard', '0003_auto_20181024_0603')

и это исправило это.

person Christian Long    schedule 29.10.2018

Это работает для меня В папке миграции вашего приложения

  1. Удалите все файлы pyc в папке вашего приложения (кроме __init__)
  2. Удалите все файлы в миграции (кроме __init__ )

  3. python manage.py makemigrations

  4. python manage.py migrate
  5. runserver
person Lê Hoàng Vũ    schedule 18.05.2019
comment
ПРЕДУПРЕЖДЕНИЕ. Не делайте этого в рабочей среде или в любой другой среде, где вам необходимо хранить записи в таблице базы данных. Это нормально, если вы просто возитесь с Localhost. - person Michael Romrell; 06.11.2020

У меня был похожий случай, когда я запускал django в Windows в виртуальной среде. В моем случае отсутствовала зависимость 0001_initial, которая определенно была в папке миграции.

«Решение» состояло в том, чтобы удалить файлы pyc и сделать еще одну попытку миграции.

person Jeremias B    schedule 13.11.2015

KeyError: u"Migration testBolt.0001_initial dependencies reference nonexistent parent node (u'delivery_boy', u'0004_auto_20150221_2011')"

Удалять

testBolt.0001_initial

затем снова запустите миграцию

person HoangYell    schedule 22.03.2019
comment
это сработало для меня, просто удалите оскорбительную миграцию, и миграции выполняются нормально. - person Harry Moreno; 09.07.2019

Убедитесь, что вы активировали виртуальную среду.

person Dawn T Cherian    schedule 27.06.2016
comment
Это решение, если вы получаете ошибку при миграции django, например: ... initial dependencies reference nonexistent parent node (u'auth', u'0008_alter_user_username_max_length') - person Pierre.Sassoulas; 23.03.2017

Это сработало для меня:

  • Удалить окружение.
  • Создайте новую среду со всеми зависимостями
person Diego Santa Cruz Mendezú    schedule 22.12.2019
comment
Ух ты! Я не знаю, как это решило мою проблему! Спасибо! - person miltonbhowmick; 28.07.2020

Я переместил папку своей виртуальной среды, поэтому я вернул ее туда, где она была, это сработало для меня.

person Clayton Sibanda    schedule 20.08.2019

Вот как это сработало для меня:

  1. Удалил все папки __pycache__ внутри каждого приложения.
  2. Удалил все файлы в папке миграции, кроме __init.py__ внутри каждой папки приложения.
  3. python manage.py makemigrations
  4. python manage.py migrate
  5. python manage.py runserver
person Sachin    schedule 15.04.2020

Я безуспешно пробовал решения NIKHIL. Что сработало для меня:

  • Удаление моей виртуальной среды
  • Удаление папок миграции __pycache__
  • Удаление старых миграций
  • Воссоздание моей виртуальной среды
  • Запуск миграций
person Programmingjoe    schedule 11.10.2018

Я просто удалил Django и переустановил его:

pip3 uninstall Django

pip3 install Django

затем мигрировал

person shifna sherin vp    schedule 05.03.2021

Когда вы попытались выполнить команду migrate, в приложении могли остаться некоторые файлы миграции. Сначала удалите все каталоги migrations из всех модулей. Для других случаев Nikhil Rane покрыл все это.

person Vishvajit Pathak    schedule 28.10.2017

Перейдите в папку testBolt -> миграции и удалите файлы 0001_initial py и pyc.

person Sreenath K Menon    schedule 10.08.2015
comment
Это не касается ситуации, когда вы удаляете устаревшее приложение/модуль. Если вы удалите миграцию «0001», вам придется удалить «0002», поскольку она обычно зависит от 0001... и так далее, пока вы не удалите все свои миграции... - person Aaron C. de Bruyn; 30.08.2015