如何解决Django执行migrate迁移命令时报错的问题
Django执行migrate命令报错解决方案
你遇到的报错是典型的迁移记录与数据库实际表结构不匹配导致的,通常是数据库中已经存在迁移要创建的表,但Django的django_migrations系统表中没有对应迁移的执行记录,导致migrate执行时尝试重复建表报错。
可清空当前数据库数据的场景(多为本地开发环境)
- 删除所有应用下
migrations目录中除__init__.py之外的所有文件 - 清空数据库中所有已创建的业务表,或直接删除当前数据库后新建同名空数据库
- 重新执行迁移命令:
python manage.py makemigrations python manage.py migrate
不可清空现有数据的场景(多为线上/测试环境)
- 执行假迁移命令,将现有迁移记录标记为已执行,跳过建表步骤:
python manage.py migrate --fake
- 如果仅单个应用报错,可以单独对指定应用执行假迁移:
python manage.py migrate --fake 你的应用名
- 后续有新的表结构改动时,正常执行
makemigrations和migrate命令即可,不会再触发重复建表报错。
内容的提问来源于stack exchange,提问作者Arvind kumar
相关产品推荐
相关产品推荐

