迁移期间的 Django NodeNotFoundError
Posted
技术标签:
【中文标题】迁移期间的 Django NodeNotFoundError【英文标题】:Django NodeNotFoundError during migration 【发布时间】:2015-09-25 16:43:51 【问题描述】:当我尝试为我的 django 应用程序 runserver
时得到的 error
如下:
django.db.migrations.graph.NodeNotFoundError: Migration tasks.0001_initial dependencies 引用不存在的父节点(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),
]
我不知道接下来应该尝试什么来解决此错误。建议赞赏!谢谢!
【问题讨论】:
我想我只是通过删除初始迁移下的依赖项来解决此错误。从这个链接:code.djangoproject.com/ticket/21142,这似乎是一个错误。 这个问题浏览量很大。您为什么不将此作为答案发布并接受它。它可能会使很多人受益。 我可能错了,但我认为他安装了比 Django 1.9 更旧的版本(引入了这种迁移)。 你有什么INSTALLED_APPS
?你的应用程序之前有'django.contrib.auth'吗?你试过先做./manage.py migrate auth
吗?
教程已不存在。 OP 自己的修复存在缺陷,很可能忘记在 INSTALLED_APPS 中启用 contrib.auth。是时候关闭这个了。
【参考方案1】:
您的错误表明tasks
应用程序有一个找不到的迁移。
这意味着您在 INSTALLED_APPS
中缺少一些应用程序 - 很可能您在此列表中没有“django.contrib.auth”。
【讨论】:
【参考方案2】:首先我建议你升级你的 django
pip install --upgrade django
如果这对您没有帮助,请尝试以下方法:
从模式中删除新的更改并运行 --python manage.py migrate --fake
现在再次使用新的更改修改您的模型并运行
--python manage.py makemigrations
然后再次运行
--python manage.py migrate
【讨论】:
【参考方案3】:您的迁移依赖于显然不存在的另一个应用程序 () 中的迁移。如果您在“身份验证”应用程序中删除或移动/合并迁移,这可能就是原因。如果您从此迁移中删除了有问题的迁移,只需确保 auth 包中“0007”迁移的更改(检查您的源代码修订历史记录)已应用于您当前的数据库,并且您应该可以在没有明确说明的情况下继续移民。我还会考虑检查您项目中的任何其他应用程序是否依赖于“auth”中缺少的迁移。干杯。
(u'auth', u'0007_alter_validators_add_error_messages')
【讨论】:
【参考方案4】:pip install --upgrade django
对我有用
我在安装新软件包时遇到了同样的错误,该软件包也将我的 Django 降级到了 1.8.16 版
pip install --upgrade django
重新安装了 1.10.3 版本(自从我开始我的项目以来我一直在使用该版本)并且解决了问题。
【讨论】:
以上是关于迁移期间的 Django NodeNotFoundError的主要内容,如果未能解决你的问题,请参考以下文章
在 Django 迁移期间收到“ValueError: Found wrong number of (0) of constraint for ...”