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

如何解决Django中relation 'django_content_type'已存在的迁移错误?

解决Django迁移错误及未应用迁移提示的方案

问题原因

截断django_migrations表后,Django丢失了迁移执行记录,会尝试重新创建已存在的数据库表(如django_content_type),导致DuplicateTable错误;同时因为记录为空,服务器启动时会提示有未应用的迁移。

解决步骤

  • 标记Django核心应用的迁移为已执行
    这些应用(contenttypes、auth、admin等)的表已经存在于数据库中,只需让Django标记其迁移为已完成:

    python manage.py migrate --fake contenttypes
    python manage.py migrate --fake auth
    python manage.py migrate --fake admin
    python manage.py migrate --fake sessions
    python manage.py migrate --fake messages
    
  • 标记自定义应用的迁移为已执行
    针对你的zijnAdmin应用,重新生成的初始迁移对应的表已存在,同样用--fake标记:

    python manage.py migrate --fake zijnAdmin
    
  • 处理其他自定义应用(如果有)
    若还有其他应用存在未应用迁移提示,且对应表已在数据库中,执行:

    python manage.py migrate --fake <你的应用名称>
    
  • 验证结果
    运行以下命令查看迁移状态,所有迁移项应显示[X]:

    python manage.py showmigrations
    

    此时启动服务器,未应用迁移的提示会消失。

关键说明

--fake参数的作用是仅更新django_migrations表的迁移记录,不实际执行SQL语句,避免重复创建已存在的表结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:02:08