【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,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 基于DeepSeek R1 满血版大模型的个人知识库,回答都源自对你专属文件的深度学习。
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
· Tinyfox 简易教程-1:Hello World!