You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Django 1.5至1.11.10执行migrate遇NodeNotFoundError求助

解决Django 1.5升级到1.11.10时的NodeNotFoundError迁移问题

我之前踩过不少Django跨大版本升级的迁移坑,针对你遇到的这个问题,给你几个实用的解决方案:

1. 修正迁移文件的依赖关系

这个错误的核心是account.0004_auto_20180419_1309迁移里引用的admin迁移节点根本不存在。你需要:

  • 找到项目中account/migrations/0004_auto_20180419_1309.py文件
  • 打开后查看dependencies数组,定位到那个错误的admin依赖项:(u'admin', u'0003_advertisements_alignedcourses_api_integration_appreciation_certificate_company_company_types_contrib')
  • 替换成正确的admin迁移版本:
    • 如果是Django默认的admin app,1.11版本的最后一个默认迁移是0002_logentry_remove_auto_add,所以改成('admin', '0002_logentry_remove_auto_add')
    • 如果你的admin是自定义app(从你有admin/apps.py来看大概率是),去admin/migrations/目录下找最新的迁移文件,比如如果最新的是0003_custom_change.py,就改成('admin', '0003_custom_change')

2. 修复自定义admin app的迁移状态

既然你的项目有自定义的admin app,先确认它的迁移文件是否完整:

  • 检查admin/migrations/目录下的所有文件,有没有缺失或者命名异常的情况
  • 如果admin app的迁移本身就有问题,先运行./manage.py migrate admin --fake来强制标记admin的迁移为已完成,再尝试执行account的迁移

3. 清理迁移历史(谨慎操作)

如果上面的方法都无效,可能是跨版本升级导致迁移系统彻底混乱了,这时候可以尝试重置迁移(记得先备份数据库):

  • 删除所有app下migrations/目录里的文件(保留__init__.py)
  • 运行./manage.py makemigrations重新生成所有app的初始迁移文件
  • 运行./manage.py migrate --fake-initial,让Django把现有数据库的状态标记为已完成初始迁移

额外提醒

从Django 1.5直接跳到1.11跨度太大了,中间跳过了迁移系统正式引入的1.7版本,很容易出问题。建议下次升级分步骤来:先升到1.7,处理好所有迁移和兼容性问题,再逐步升到1.8、1.9直到1.11,这样能减少很多莫名其妙的bug。

内容的提问来源于stack exchange,提问作者Akhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:24:20