【Django】make
问题
已有的model,修改之后,想重新建模,于是将migrations文件夹中除init.py之外其他文件都删掉,
再次执行以下步骤python manage.py makemigrations确认成功,执行python manage.py migrate,
提示No migrations to apply.
再次执行以下步骤python manage.py makemigrations确认成功,执行python manage.py migrate,
提示No migrations to apply.
Migration记录
你是否有一个疑问:为什么只是将Models提交到数据库中,却要经历两个命令makemigrations和migrate?在makemigrations命令中,django做了什么呢?
实际上,只有在migrate命令中django才会将Model的改动提交给数据库,而在makemigrations命令中,django会将Model的改动写成一个py文件,存储在与model文件同目录的migrations文件夹下。
在migrate命令中,django不仅将Model的改动写入数据库,还会将migrate记录一并写入数据库下的django_migrations表中。
命令参考
python manage.py migrate app_name #指定迁移某个应用
#
python manage.py migrate app_name 000x #精确到迁移至某个(.py)文件
#python manage.py makemigrations app_name #生成迁移文件
解决方案
方式一:(一般就可以解决问题)
1、python manage.py migrate --fake #使用这条命令
方式二:(参考别人的方式)
1、python manage.py dbshell 进到数据库中,执行delete from django_migrations where app='your_appname';
2、python manage.py makemigrations(若migrations文件未删除,可不执行这一步)
3、python manage.py migrate 或 python manage.py migrate --fake
方式三:亲测有用
在django_migrations表中,migrate执行完后会自动添加最后一个。如,init0001。这是系统一个机制,防止重复执行。
即:makemigrations会生成一个migrations文件,执行migrate会执行里面的变更,并把这个执行记录放入到django_migrations表中
在django_migrations表中对应的项目删除即可。就可以重新执行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix