迁移期间的Django NodeNotFoundError

时间:2015-07-07 23:58:28

标签: python django heroku sqlite database-migration

当我尝试error获取我的django应用时,我得到的runserver如下:

  

django.db.migrations.graph.NodeNotFoundError:迁移tasks.0001_initial依赖项引用不存在的父节点(u' auth',u' 0007_alter_validators_add_error_messages')

这是在我遵循这个heroku教程后发生的:https://devcenter.heroku.com/articles/getting-started-with-django

我修改了设置文件以包含:

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

我的0001_initial迁移如下:

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),
    ]

我迷失了接下来我应该尝试修复此错误的内容。建议赞赏!谢谢!

4 个答案:

答案 0 :(得分:2)

您的迁移依赖于另一个app()中的迁移,该app(显然不存在)。如果您在'auth'应用中删除或移动/合并迁移,这可能就是原因。如果您从此迁移中删除了违规迁移,只需确保auth包中的'0007'迁移(检查您的源代码修订历史记录)中的更改已经应用于您当前的数据库,您应该没有明确的继续移民。我还会考虑检查项目中的任何其他应用程序是否依赖于“auth”中缺少的迁移。干杯。

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

答案 1 :(得分:1)

pip install --upgrade django

对我有用

我在安装新软件包时遇到了同样的错误,该软件包也将我的Django降级为版本1.8.16

pip install --upgrade django安装了1.10.3版本(自从我开始使用我的项目以来我一直在工作),这解决了这个问题。

答案 2 :(得分:0)

您的错误表明tasks应用程序无法找到迁移。

这意味着,你遗漏了INSTALLED_APPS中的一些应用程序 - 很可能你在这个列表中没有'django.contrib.auth'。

答案 3 :(得分:0)

首先我建议你升级你的django

pip install --upgrade django

如果这对您没有帮助,请尝试以下操作:

  • 从模态中删除新更改并运行 - python manage.py migrate --fake
  • 现在再次使用新更改修改模型并运行 - python manage.py makemigrations
  • 然后又跑了 - python manage.py migrate