误删migrations文件夹并清空数据库后migrate提示无迁移可执行,求助原因
问题原因
你只清空了自定义的业务数据表,但Django用来追踪迁移执行状态的系统表django_migrations仍保留着之前的迁移记录。当你重新生成迁移文件后,Django对比该表中的记录,会误认为新生成的迁移已经被执行过,因此提示"No migrations to apply"。
解决步骤
- 清空数据库里的
django_migrations表(可以直接删除该表,或者删除表内所有行记录) - 重新生成所有应用的迁移文件:
若个别应用未生成迁移,可指定应用名:python manage.py makemigrationspython manage.py makemigrations your_app_name - 执行迁移,此时Django会重建所有数据表并更新迁移状态:
如果执行时碰到"table already exists"错误(比如未彻底清空业务表),可添加python manage.py migrate--fake-initial参数让Django标记初始迁移为已应用:python manage.py migrate --fake-initial
内容的提问来源于stack exchange,提问作者sash
相关产品推荐
相关产品推荐

