如何迁移Django模型?解决迁移历史不一致异常问题
解决Django迁移历史不一致问题(InconsistentMigrationHistory)
问题原因
admin应用的0001_initial迁移依赖自定义accounts应用的0001_initial迁移,但admin的迁移已提前被应用到数据库中,导致迁移执行顺序与依赖关系冲突。
解决方案
方案一:开发环境(数据可重置)
适用于本地开发、数据无保留价值的场景:
- 备份数据库(可选),若使用SQLite,直接复制
db.sqlite3文件即可。 - 删除数据库文件(如
db.sqlite3),或清空数据库内所有表。 - 进入每个应用的
migrations目录,删除除__init__.py之外的所有迁移文件。 - 重新执行迁移命令:
python manage.py makemigrations python manage.py migrate
方案二:生产环境(需保留数据)
适用于线上环境、不能丢失现有数据的场景:
- 连接到数据库,找到
django_migrations表,删除其中记录为admin应用、0001_initial的行。 - 先执行
accounts应用的迁移:python manage.py migrate accounts - 再执行全局迁移,完成剩余应用的迁移:
python manage.py migrate
注意事项
- 确保
accounts应用已添加到settings.py的INSTALLED_APPS列表中。 - 若为自定义迁移依赖导致的问题,检查
accounts应用迁移文件中的dependencies配置,确认依赖关系声明是否正确。
内容的提问来源于stack exchange,提问作者محمدجواد رضایی
相关产品推荐
相关产品推荐

