当我运行以下命令时
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')"
我该如何解决这个问题?
解决方案-1
从迁移文件夹中删除pyc
文件。
解决方案-2
需要通过编辑迁移文件从testBolt.0001_initial
中删除该引用。
解决方案-3
-
从模型中删除新更改并运行
python manage.py migrate --fake
-
现在再次修改你的模型与新的变化
-
运行
python manage.py makemigrations
-
然后再次运行
python manage.py migrate
在我的案例中,依赖模块名称中有.py
扩展,如下所示:
dependencies = [
('dashboard', '0003_auto_20181024_0603.py'),
('auth', '__latest__'),
('contenttypes', '__latest__'),
]
我删除了.py
,将行更改为该
('dashboard', '0003_auto_20181024_0603'),
并且修复了它。
我也遇到了同样的问题。在我的情况下,由于我手动处理迁移,我忘记在migrations
文件夹中创建__init__.py
。
这对我有用在您的应用程序迁移文件夹中
- 删除应用程序文件夹中的所有文件pyc(
__init__
除外) -
删除迁移中的所有文件(
__init__
除外) -
python manage.py makemigrations
python manage.py migrate
runserver
我也遇到过类似的情况,在虚拟环境中的窗口中运行django。在我的案例中,缺少的依赖项是0001_initial,它肯定在迁移文件夹中。
"解决方案"是删除pyc文件并进行另一次迁移尝试。
以下是它对我的作用:
- 删除了每个应用程序中的所有
__pycache__
文件夹 - 删除了迁移文件夹中的所有文件,每个应用程序文件夹中的
__init.py__
除外 python manage.py makemigrations
python manage.py migrate
python manage.py runserver
我尝试了NIKIL的解决方案,但没有成功。对我有用的是:
- 删除我的虚拟环境
- 删除迁移
__pycache__
文件夹 - 删除旧迁移
- 重新创建我的虚拟环境
- 正在运行迁移
KeyError: u"Migration testBolt.0001_initial dependencies reference nonexistent parent node (u'delivery_boy', u'0004_auto_20150221_2011')"
删除
testBolt.001_初始
然后再次运行migrate
确保您已经激活了虚拟环境。
这对我有效:
- 删除环境
- 创建具有所有依赖项的新环境
我在我的虚拟环境文件夹中移动过,所以我把它移回了原来的位置,对我来说很有效。
我刚刚卸载了Django并重新安装了它:
pip3 uninstall Django
pip3 install Django
然后迁移
尝试migrate命令时,应用程序中可能还有一些迁移文件。首先从所有模块中删除所有migrations
目录。对于其他案件,Nikhil Rane已经涵盖了这一切。
这对我有效:
- 删除当前虚拟环境并创建新的虚拟环境
- 在项目目录中运行此命令以删除所有迁移文件-
find . -type d -name "__pycache__" -exec rm -rf "{}" ;
- 删除数据库文件
.sqlite3
- 现在使用以下命令运行迁移:
python manage.py makemigrations
- 迁移迁移:
python manage.py migrate
基本上,以下所有步骤都很常见,我认为所有步骤都经过了这些步骤,但如果您错过了第一步,即重新创建虚拟环境,则必须尝试一下。
转到文件夹testBolt->migrations并删除0001_initial py和pyc文件。