web-dev-qa-db-fra.com

Django: les dépendances font référence à un noeud parent inexistant

Quand j'exécute la commande suivante

python manage.py migrate

Je reçois cette erreur de Django, je ne peux donc pas avancer dans ma pratique:

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')"

Comment résoudre ce problème?

22
NIKHIL RANE

Solution - 1

Supprimez les fichiers pyc de votre dossier de migration.

Solution - 2

Nécessité de supprimer cette référence de testBolt.0001_initial en modifiant le fichier de migration.

Solution - 3

  1. Supprimez les nouvelles modifications des modaux et exécutez python manage.py migrate --fake

  2. Maintenant, modifiez à nouveau vos modèles avec de nouvelles modifications

  3. Exécuter python manage.py makemigrations

  4. Et puis exécutez à nouveau python manage.py migrate

13
NIKHIL RANE

J'ai eu un cas similaire, en cours d'exécution Django dans Windows dans une env virtuelle. Dans mon cas, la dépendance manquante était 0001_initial - ce qui était clairement dans le dossier de migration.

La solution consistait à supprimer les fichiers pyc et à effectuer une autre tentative de migration. 

4
Jeremias B

J'ai eu le même problème. Dans mon cas, comme j'ai joué avec les migrations manuellement, j'ai oublié de créer __init__.py dans le dossier migrations.

3
TitanFighter

Dans mon cas, j'avais l'extension .py dans le nom du module de dépendance, comme ceci:

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

J'ai enlevé le .py, en le changeant en ceci

    ('dashboard', '0003_auto_20181024_0603')

et cela l'a corrigé.

2
Christian Long

Assurez-vous d'avoir activé votre environnement virtuel.

2
Dawn T Cherian

J'ai essayé les solutions de NIKHIL sans succès. Ce qui a fonctionné pour moi a été:

  • Supprimer mon environnement virtuel
  • Suppression des dossiers de migration __pycache__
  • Supprimer les anciennes migrations
  • Recréer mon environnement virtuel
  • Migrations en cours
0
Programmingjoe

Il se peut qu'il reste des fichiers de migration dans l'application lorsque vous avez essayé la commande migrate. Commencez par supprimer tous les répertoires migrations de tous les modules. Pour les autres cas, Nikhil Rane a tout couvert.

0
Vishvajit Pathak
  1. lancez python manage.py migrate --fake

  2. Exécutez python manage.py makemigrations

  3. Et puis exécutez à nouveau python manage.py migrate

cette mine fixe en douceur

0
Abey Thomas