删除Django迁移文件后,makemigrations与migrate执行异常求助
解决方案
1. 清理数据库中的迁移记录
问题根源是数据库的django_migrations表仍保留着已删除的迁移文件记录,导致Django判断逻辑混乱。需要删除涉事app的迁移记录:
- 进入Django交互式shell:
./manage.py shell
- 在shell中执行SQL删除操作:
from django.db import connection with connection.cursor() as cursor: cursor.execute("DELETE FROM django_migrations WHERE app IN ('admin', 'auth', 'axes', 'contenttypes', 'sessions');")
2. 恢复或重新生成迁移文件
- Django自带app(admin、auth、contenttypes、sessions):直接强制生成新的迁移文件:
./manage.py makemigrations admin auth contenttypes sessions
- 第三方app(axes):优先通过重装包恢复自带的迁移文件:
pip install --force-reinstall django-axes==5.31.0
如果重装后仍无迁移文件,再执行强制生成命令:
./manage.py makemigrations axes
3. 伪应用初始迁移
由于数据库中已经存在这些app的表,使用--fake-initial参数让Django跳过实际表创建,只同步迁移记录:
./manage.py migrate --fake-initial
4. 验证修复效果
依次执行以下命令,确认不再出现异常提示:
./manage.py makemigrations ./manage.py migrate
内容的提问来源于stack exchange,提问作者Maksim Smolovsky
相关产品推荐
相关产品推荐

