-->

Django NodeNotFoundError during migration

2019-04-19 19:27发布

问题:

The error I get when I try to runserver for my django app is as follows:

django.db.migrations.graph.NodeNotFoundError: Migration tasks.0001_initial dependencies reference nonexistent parent node (u'auth', u'0007_alter_validators_add_error_messages')

This happened after I followed this heroku tutorial: https://devcenter.heroku.com/articles/getting-started-with-django

I modified the settings file to include:

import dj_database_url
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

#DATABASES['default'] =  dj_database_url.config()
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'tasks/static'),
)

My 0001_initial migration is as follows:

from __future__ import unicode_literals

from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('auth', '0007_alter_validators_add_error_messages'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

I'm lost as to what I should try next to fix this error. Advice appreciated! Thank you!

回答1:

your migration has a dependency on a migration in another app () which apparently doesn't exist. if you've removed or moved/consolidation migrations in the 'auth' app, this is possibly why. if you remove the offending migration from this migration, just make sure changes from the '0007' migration in the auth package (check your source code revision history) have already been applied to your current database and you should be fine to continue without that explicit migration. i would also consider checking if any other apps in your project depend on those missing migrations from 'auth'. cheers.

(u'auth', u'0007_alter_validators_add_error_messages')


回答2:

It worked for me with pip install --upgrade django

I got the same error on installing a new package which also downgraded my Django to version 1.8.16

pip install --upgrade django installed back the 1.10.3 version (on which I had been working ever since I started with my project) and that solved the problem.



回答3:

Your error indicates that tasks application has a migration that can't be found.

That's mean, that you are missing some applications in INSTALLED_APPS - most probably you do not have 'django.contrib.auth' in this list.



回答4:

First I would suggest you to upgrade your django

pip install --upgrade django

If this doesn't help you then try the following:

  • Remove the new changes from the modals and run -- python manage.py migrate --fake
  • Now again modify your models with new changes and Run -- python manage.py makemigrations
  • And then again run -- python manage.py migrate