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

Django生成迁移文件后执行migrate提示无迁移可应用、表未创建怎么办?

问题原因与对应解决方法

  • 迁移记录被误标记为已应用
    Django会将所有已执行的迁移记录存在数据库的django_migrations表中,如果你之前对machine应用执行过--fake迁移,或者删除过旧迁移文件后重新生成了同名的0001_initial.py,系统会认为该迁移已经完成,不会重复执行。
    解决方法:
    登录PostgreSQL的Houston库,执行SQL查询:
SELECT * FROM django_migrations WHERE app = 'machine' AND name = '0001_initial';

如果存在对应记录,执行删除:

DELETE FROM django_migrations WHERE app = 'machine' AND name = '0001_initial';

之后重新执行python manage.py migrate即可。

  • 迁移目录不符合Django识别要求
    检查你的machine应用下的migrations目录是否存在__init__.py文件,如果该文件缺失,Django无法扫描到目录下的迁移文件,自然不会执行。如果缺失手动创建空的__init__.py文件后重新执行迁移命令即可。

  • 配置文件存在语法错误
    你提供的settings.py片段存在两处语法问题,若实际代码中也存在该问题会导致配置不生效:

  1. INSTALLED_APPS列表最后用了}]闭合,多了多余的},正确应该只用]
  2. DATABASES配置缺少两个闭合符:default字典的闭合}和DATABASES字典的闭合}
    修正语法后重启服务重新执行迁移即可。
  • 数据库权限不足
    确认postgres用户对Houston数据库拥有建表权限,可以直接登录PostgreSQL执行建表测试,如果权限不足可以给用户授权:
GRANT ALL PRIVILEGES ON DATABASE Houston TO postgres;

如果以上排查都没有解决,可以执行命令查看迁移的详细执行过程定位问题:
python manage.py migrate -v 3
如果确认迁移文件正常,也可以先重置machine应用的迁移记录再重新执行:

python manage.py migrate --fake machine zero
python manage.py migrate machine

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:09:01