Django-合并migrations
一、背景
在开发一个迭代时,产生了很多migrations文件,而且这些migrations文件都是一个model表改来改去产生的,有必要将这个迭代的migrations文件在提测前合并成一个migrations文件。
二、操作方法
方法一:需要对已经初始化的库表做还原删除
- 直接将本次迭代所产生的migrations文件删除
- 执行命令
python manage.py makemigrations
生成一个新的migrations文件 - 去数据库中,找到
django_migrations
表,删除步骤2对应的记录 - 在数据库中,找到步骤2migrations文件所创建的表和字段,然后删掉
- 最后执行命令
python manage.py migrate
重新初始化数据库
方法二:不删除数据库,只是重新创建新的migrations文件
- 首先要保证,目前的migration文件和数据库是同步的,通过执行。
python manage.py makemigrations
- 查看当前项目下所有APP对应的已经生效的(已经成功执行的)migration文件,
命令如下:
python manage.py showmigrations
结果如下:
account[X] 0001_initial[X] 0002_initial_user_data[X] 0003_auto_20180806_1432
admin[X] 0001_initial
app_control[X] 0001_initial[X] 0002_initial_app_control
auth[X] 0001_initial[X] 0002_alter_permission_name_max_length[X] 0003_alter_user_email_max_length[X] 0004_alter_user_username_opts[X] 0005_alter_user_last_login_null[X] 0006_require_contenttypes_0002
contenttypes[X] 0001_initial[X] 0002_remove_content_type_name
djcelery[X] 0001_initial
home_application[X] 0001_initial[X] 0002_auto_20191204_2347[X] 0003_auto_20191205_1135[X] 0004_auto_20191219_1745[X] 0005_auto_20191223_1541[X] 0006_auto_20200221_0006[X] 0007_auto_20200320_1448[X] 0008_auto_20200407_1422[X] 0009_initial_team[X] 0010_auto_20200422_1646[X] 0011_excel[X] 0012_checkobj_search_field[X] 0013_auto_20210301_1600[X] 0014_scriptitem_influence_level[X] 0015_customfield[X] 0016_auto_20210302_1505[X] 0017_auto_20210302_1507[X] 0018_paramset_snapshot[X] 0019_auto_20210304_1116[X] 0020_auto_20210304_1148[X] 0021_reportitem_influence_level[X] 0013_auto_20210304_2035[X] 0022_merge[X] 0023_htmlfile[X] 0024_auto_20210427_1343[X] 0025_scriptitem_description[X] 0026_scriptitem_suggestions[X] 0027_auto_20210521_1552[X] 0028_auto_20210524_1546[X] 0029_reports_report_name[X] 0030_auto_20210729_1354[X] 0031_auto_20210729_1413[X] 0032_auto_20220221_1520[X] 0033_menurole[X] 0034_auto_20220302_2118[X] 0035_auto_20220303_1908[X] 0036_tasktimeset_unit[X] 0037_auto_20220321_1918[X] 0038_auto_20220321_2010[X] 0039_auto_20220322_0931
sessions[X] 0001_initial
sites[X] 0001_initial
- 重置你的APP的操作,使它们恢复到没有执行的状态,这里注意一下fake前面的符号,是两个“-”,另外,app_name 是APP的名字。
python manage.py migrate --fake app_name zero
重装完后进行检查:python manage.py showmigrations
account[X] 0001_initial[X] 0002_initial_user_data[X] 0003_auto_20180806_1432
admin[X] 0001_initial
app_control[X] 0001_initial[X] 0002_initial_app_control
auth[X] 0001_initial[X] 0002_alter_permission_name_max_length[X] 0003_alter_user_email_max_length[X] 0004_alter_user_username_opts[X] 0005_alter_user_last_login_null[X] 0006_require_contenttypes_0002
contenttypes[X] 0001_initial[X] 0002_remove_content_type_name
djcelery[X] 0001_initial
home_application[ ] 0001_initial[ ] 0002_auto_20191204_2347[ ] 0003_auto_20191205_1135[ ] 0004_auto_20191219_1745[ ] 0005_auto_20191223_1541[ ] 0006_auto_20200221_0006[ ] 0007_auto_20200320_1448[ ] 0008_auto_20200407_1422[ ] 0009_initial_team[ ] 0010_auto_20200422_1646[ ] 0011_excel[ ] 0012_checkobj_search_field[ ] 0013_auto_20210301_1600[ ] 0014_scriptitem_influence_level[ ] 0015_customfield[ ] 0016_auto_20210302_1505[ ] 0017_auto_20210302_1507[ ] 0018_paramset_snapshot[ ] 0019_auto_20210304_1116[ ] 0020_auto_20210304_1148[ ] 0021_reportitem_influence_level[ ] 0013_auto_20210304_2035[ ] 0022_merge[ ] 0023_htmlfile[ ] 0024_auto_20210427_1343[ ] 0025_scriptitem_description[ ] 0026_scriptitem_suggestions[ ] 0027_auto_20210521_1552[ ] 0028_auto_20210524_1546[ ] 0029_reports_report_name[ ] 0030_auto_20210729_1354[ ] 0031_auto_20210729_1413[ ] 0032_auto_20220221_1520[ ] 0033_menurole[ ] 0034_auto_20220302_2118[ ] 0035_auto_20220303_1908[ ] 0036_tasktimeset_unit[ ] 0037_auto_20220321_1918[ ] 0038_auto_20220321_2010[ ] 0039_auto_20220322_0931
sessions[X] 0001_initial
sites[X] 0001_initial
- 删除migrations文件夹下面你要删除的migrations文件,除了__init__.py文件,包括pycache文件夹!
- 执行下面的命令,再次为这个APP 生成 migrations文件
python manage.py makemigrations
- 最后执行下面的命令,使刚刚生成的migrations 文件记录到django_migrations数据表中,大功告成。
py manage.py migrate --fake app
三、参考文章
- 【Django】将多个migrations合并为一个
- Django数据库操作 —— 干净的重置migration
Django-合并migrations相关推荐
- 关于 django.db.migrations.exceptions.InconsistentMigrationHistory
出现的原因 出现这个的问题大概有几种: 迁移过程失败,导致 django_migrations 中有记录,但实际没有表 修改了 django 内部的表结构没有做相应的处理 诸如这几种原因其实都是因为 ...
- Django合并清理migrations文件
随着项目开发进程,对 model 的不断修改将生成越来越多的 migrations 文件,对项目维护造成很多麻烦,所以需要对目前项目里的迁移文件进行合并操作 1. 初始项目 项目此时处于初期,数据库中 ...
- 解决django Running migrations: No migrations to apply
标题Running migrations: No migrations to apply. ![报错截图](https://img-blog.csdnimg.cn/20201022162855129. ...
- django项目migrations文件要不要提交到代码库
总结: 数据库结构趋于稳定时,生成所有app的迁移文件并提交到master 镜像启动命令中只执行migrate 按照官方的说法,应该提交,并且在服务器端应该直接执行 migrate,无需再次生成. Y ...
- Django合并多个查询结果
qs_list = qs_list | qs.filter(Name__Company=i.id) 参考连接:http://www.yihaomen.com/article/python/533.ht ...
- Django使用心得(一) 善用migrations
在使用和学习Django框架时,发现很多人包括我自己在对Django项目进行版本管理时,通常把migrations文件添加到了.gitignore中. 笔者也一直有疑问这种做法是否正确,于是去查看官方 ...
- Two Scoops Django 推荐的数据模型最佳实践
添加或修改数据模型都不能马虎,有关数据的操作都需慎重考虑. 推荐使用的 Django 数据模型相关的包: django-model-utils: 使用其 TimeStampedModel django ...
- Django源码分析10:makemigrations命令概述
django源码分析 本文环境python3.5.2,django1.10.x系列 django源码分析-makemigrations命令概述 Django项目中的数据库管理命令就是通过makemig ...
- Django源码分析7:migrate命令的浅析
django源码分析 本文环境python3.5.2,django1.10.x系列 django源码分析-migrate命令分析 Django项目中提供了,通过migrations操作数据库的结构的命 ...
- Django源码分析1:创建项目和应用分析
django命令行源码分析 本文环境python3.5.2,django1.10.x系列 当命令行输入时django-admin时 (venv) ACA80166:dbManger wuzi$ dja ...
最新文章
- java awt button_AWT Button类
- Java虚拟机常量池和本地变量表、自己定义的数值自动装入常量池
- TCP三次握手详解及释放连接过程
- Windows 10重装系统时,提示Windows只能安装到GPT磁盘的解决方法(更新于2021.4.28)
- 使用Python进行汽车黑客攻击:泄露GPS和OBDIICAN总线数据
- OAF_OAF组件系列1 - Item Style汇总(概念)
- Python图像处理库PIL的ImageStat模块介绍
- 部署可道云_可道云-快速搭建个人用云网盘
- 人工智能(15)---宽动态摄像头
- 马化腾“闪退”华人首富;马云回应收购中天微;华为遭美刑事调查 | CSDN极客头条...
- jquery.validate+jquery.form提交的三种方式
- javascript内存泄露
- Java字符编码转换过程说明
- C语言文件的存储和处理实验报告,c语言文件处理实验报告(6页)-原创力文档...
- 3D Max模型贴图以及优化
- kali mysql 卸载,linux mysql卸载命令
- 百度网盘Mac客户端无法上传和下载问题解决办法
- 如何制作一寸。二寸。六寸照片 多学点,以后自己也可以弄哦
- 疯狂架构师最强分享:分布式架构与性能优化,你学会了吗?
- 关于vscode中输入的中文变繁体的问题