一、背景

在开发一个迭代时,产生了很多migrations文件,而且这些migrations文件都是一个model表改来改去产生的,有必要将这个迭代的migrations文件在提测前合并成一个migrations文件。

二、操作方法

方法一:需要对已经初始化的库表做还原删除

  1. 直接将本次迭代所产生的migrations文件删除
  2. 执行命令python manage.py makemigrations生成一个新的migrations文件
  3. 去数据库中,找到django_migrations表,删除步骤2对应的记录
  4. 在数据库中,找到步骤2migrations文件所创建的表和字段,然后删掉
  5. 最后执行命令python manage.py migrate重新初始化数据库

方法二:不删除数据库,只是重新创建新的migrations文件

  1. 首先要保证,目前的migration文件和数据库是同步的,通过执行。
    python manage.py makemigrations
  2. 查看当前项目下所有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
  1. 重置你的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
  1. 删除migrations文件夹下面你要删除的migrations文件,除了__init__.py文件,包括pycache文件夹!
  2. 执行下面的命令,再次为这个APP 生成 migrations文件
    python manage.py makemigrations
  3. 最后执行下面的命令,使刚刚生成的migrations 文件记录到django_migrations数据表中,大功告成。
    py manage.py migrate --fake app

三、参考文章

  1. 【Django】将多个migrations合并为一个
  2. Django数据库操作 —— 干净的重置migration

Django-合并migrations相关推荐

  1. 关于 django.db.migrations.exceptions.InconsistentMigrationHistory

    出现的原因 出现这个的问题大概有几种: 迁移过程失败,导致 django_migrations 中有记录,但实际没有表 修改了 django 内部的表结构没有做相应的处理 诸如这几种原因其实都是因为 ...

  2. Django合并清理migrations文件

    随着项目开发进程,对 model 的不断修改将生成越来越多的 migrations 文件,对项目维护造成很多麻烦,所以需要对目前项目里的迁移文件进行合并操作 1. 初始项目 项目此时处于初期,数据库中 ...

  3. 解决django Running migrations: No migrations to apply

    标题Running migrations: No migrations to apply. ![报错截图](https://img-blog.csdnimg.cn/20201022162855129. ...

  4. django项目migrations文件要不要提交到代码库

    总结: 数据库结构趋于稳定时,生成所有app的迁移文件并提交到master 镜像启动命令中只执行migrate 按照官方的说法,应该提交,并且在服务器端应该直接执行 migrate,无需再次生成. Y ...

  5. Django合并多个查询结果

    qs_list = qs_list | qs.filter(Name__Company=i.id) 参考连接:http://www.yihaomen.com/article/python/533.ht ...

  6. Django使用心得(一) 善用migrations

    在使用和学习Django框架时,发现很多人包括我自己在对Django项目进行版本管理时,通常把migrations文件添加到了.gitignore中. 笔者也一直有疑问这种做法是否正确,于是去查看官方 ...

  7. Two Scoops Django 推荐的数据模型最佳实践

    添加或修改数据模型都不能马虎,有关数据的操作都需慎重考虑. 推荐使用的 Django 数据模型相关的包: django-model-utils: 使用其 TimeStampedModel django ...

  8. Django源码分析10:makemigrations命令概述

    django源码分析 本文环境python3.5.2,django1.10.x系列 django源码分析-makemigrations命令概述 Django项目中的数据库管理命令就是通过makemig ...

  9. Django源码分析7:migrate命令的浅析

    django源码分析 本文环境python3.5.2,django1.10.x系列 django源码分析-migrate命令分析 Django项目中提供了,通过migrations操作数据库的结构的命 ...

  10. Django源码分析1:创建项目和应用分析

    django命令行源码分析 本文环境python3.5.2,django1.10.x系列 当命令行输入时django-admin时 (venv) ACA80166:dbManger wuzi$ dja ...

最新文章

  1. java awt button_AWT Button类
  2. Java虚拟机常量池和本地变量表、自己定义的数值自动装入常量池
  3. TCP三次握手详解及释放连接过程
  4. Windows 10重装系统时,提示Windows只能安装到GPT磁盘的解决方法(更新于2021.4.28)
  5. 使用Python进行汽车黑客攻击:泄露GPS和OBDIICAN总线数据
  6. OAF_OAF组件系列1 - Item Style汇总(概念)
  7. Python图像处理库PIL的ImageStat模块介绍
  8. 部署可道云_可道云-快速搭建个人用云网盘
  9. 人工智能(15)---宽动态摄像头
  10. 马化腾“闪退”华人首富;马云回应收购中天微;华为遭美刑事调查 | CSDN极客头条...
  11. jquery.validate+jquery.form提交的三种方式
  12. javascript内存泄露
  13. Java字符编码转换过程说明
  14. C语言文件的存储和处理实验报告,c语言文件处理实验报告(6页)-原创力文档...
  15. 3D Max模型贴图以及优化
  16. kali mysql 卸载,linux mysql卸载命令
  17. 百度网盘Mac客户端无法上传和下载问题解决办法
  18. 如何制作一寸。二寸。六寸照片 多学点,以后自己也可以弄哦
  19. 疯狂架构师最强分享:分布式架构与性能优化,你学会了吗?
  20. 关于vscode中输入的中文变繁体的问题

热门文章

  1. win10系统如何重置电脑
  2. nvm是做什么的?nvm怎么使用
  3. Catia DMU干涉检查操作说明
  4. 一键查找,批量修改CAD图纸的标注文字
  5. 关于DLNA的资料汇总(更新部分支持影音设备)
  6. 湾区求职分享:三个月努力拿到 Google offer
  7. 环境监测空气保护网站搭建模板
  8. 无纺布袋厂的工作原理与运行维护
  9. Java 19 正式发布,改善多线程、并发编程难度
  10. Android中使用Kotlin协程代替RxJava封装网络请求