如何解决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
相关产品推荐
相关产品推荐

