如何解决Django迁移中的NodeNotFoundError依赖不存在错误?
解决Django迁移NodeNotFoundError问题
核心原因
你的posty.0038_remove_post_uzytkownik_post_grupa迁移文件依赖了一个不存在的auth应用迁移版本0048_alter_group_grupa_departament_and_more。即便删除本地migrations文件夹和__pycache__,数据库的django_migrations表仍保留着旧的依赖记录,所以问题无法解决。
具体修复步骤
修正迁移依赖
找到posty/migrations/0038_remove_post_uzytkownik_post_grupa.py文件,查看dependencies列表,把不存在的('auth', '0048_alter_group_grupa_departament_and_more')替换为当前auth应用实际存在的最新迁移版本号。比如auth最新迁移是0012_alter_user_first_name_max_length,就改成('auth', '0012_alter_user_first_name_max_length')。清理数据库迁移记录
连接到Django数据库,操作django_migrations表:- 先查询posty相关迁移记录:
SELECT * FROM django_migrations WHERE app = 'posty'; - 删除所有posty的迁移记录:
DELETE FROM django_migrations WHERE app = 'posty'; - 同时检查auth的迁移记录,确认
0048_alter_group_grupa_departament_and_more是否存在,若不存在则直接确认依赖修正的正确性。
- 先查询posty相关迁移记录:
重新生成并应用迁移
回到项目根目录执行命令:python manage.py makemigrations posty python manage.py migrate posty特殊场景处理
若问题源于第三方库修改auth迁移导致版本不兼容:- 检查第三方库与当前Django版本的兼容性,必要时回滚第三方库到兼容版本;
- 若手动删除过auth迁移文件,可先备份数据库,再生成空迁移调整依赖:
python manage.py makemigrations auth --empty
内容的提问来源于stack exchange,提问作者Don Kojote
相关产品推荐
相关产品推荐

