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

部署至Dokku测试环境执行migrate遇NodeNotFoundError求助

解决Dokku部署时Wagtail迁移依赖缺失问题

针对部署到Dokku测试环境时执行python manage.py migrate出现的NodeNotFoundError(找不到wagtailcore.0092_query_searchpromotion_querydailyhits迁移节点),按以下步骤排查解决:

1. 确保部署环境与本地依赖版本完全一致

  • 检查项目依赖文件(requirements.txt或pyproject.toml),确认Wagtail版本为精确锁定的wagtail==6.2.2,避免使用>=等版本范围导致Dokku安装了不同小版本的Wagtail。
  • 执行Dokku缓存清理与重建,强制重新安装依赖:
    dokku repo:purge-cache <你的应用名称>
    dokku ps:rebuild <你的应用名称>
    

2. 核对迁移文件的依赖定义

  • 打开generic/migrations/0001_initial.py,查看dependencies列表中的('wagtailcore', '0092_query_searchpromotion_querydailyhits'):
    • 对比本地Wagtail安装目录下的wagtailcore/migrations文件夹,确认该迁移文件是否存在。若本地存在但Dokku环境不存在,说明部署环境的Wagtail版本与本地不一致,回到步骤1处理。
    • 若依赖是手动误写,修改为当前Wagtail版本中实际存在的迁移节点(比如查看wagtailcore最新迁移的编号)。

3. 手动修复数据库迁移记录(谨慎操作)

如果确认Dokku环境的Wagtail版本正确,但数据库迁移状态异常:

  • 连接到Dokku的PostgreSQL数据库:
    dokku postgres:connect <你的数据库名称>
    
  • 执行SQL添加缺失的迁移记录:
    INSERT INTO django_migrations (app, name, applied) VALUES ('wagtailcore', '0092_query_searchpromotion_querydailyhits', NOW());
    
  • 退出数据库后重新执行迁移:
    dokku run <你的应用名称> python manage.py migrate
    

4. 重新生成迁移文件

若迁移文件本身存在版本兼容问题:

  • 本地删除generic/migrations下的所有迁移文件(保留__init__.py):
    rm generic/migrations/*.py
    
  • 重新生成迁移文件:
    python manage.py makemigrations generic
    
  • 提交新的迁移文件到代码仓库,重新部署到Dokku。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:44:56