详解重置Django migration的常见方式
根据django官方文档建议,开发过程中会把生成的migrations提交到git中。由于各种原因,会有一些场景需要重置migrations,故总结一些常用场景及解决办法。
场景一
不考虑数据库数据,可以完全清空数据库。
步骤:
删除所有migrations
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete find . -path "*/migrations/*.pyc" -delete
删除数据库
重新生成migrations
python manage.py makemigrations python manage.py migrate
场景二
有时候我们会直接导入完整的数据库,包括数据,这种情况下就不能简单的清空数据库。
这时我们的目的就是:清空数据库的migration history,保证以后的migrate能正常使用,但要保留其他数据。
步骤:
从数据库中删除所有非0001_initial的migration history
DELETE FROM django_migrations WHERE app IN ('your','app','labels') AND name != '0001_initial'
使用migrate命令回滚0001_initial的migration history
python manage.py migrate --fake your zero python manage.py migrate --fake app zero python manage.py migrate --fake labels zero
重新生成0001_initial,如果能保证已有0001_initial已是最新的,可跳过此步
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete find . -path "*/migrations/*.pyc" -delete python manage.py makemigrations
在数据库中生成新的0001_initial记录
python migrate --fake-initial
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
解决Django数据库makemigrations有变化但是migrate时未变动问题
写models.py时缺少了一个 verbose_name,导致数据库出现问题,整了很久,摸索出重新建立数据库的方法: 首先删除每个app中的migrations中的除了init.py的文件,在数据库中清空所有的表,然后执行migrate,这时会自动生成系统默认的那些表,然后执行makemigrations,再执行migrate 如果只是众多应用中的一个出了问题的话,删除与之相关的表,然后进入django_migrations表中,将相应的app那项记录删除,然后再执行 makemigratio
-
浅谈Django学习migrate和makemigrations的差别
本文主要研究的是Django中migrate和makemigrations的差别,具体如下. 在你改动了 model.py的内容之后执行下面的命令: Python manger.py makemigrations 相当于 在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py, 但是这个改动还没有作用到数据库文件 你可以手动打开这个文件,看看里面是什么 在此之后执行命令 python manager.py migrate 将该改
-
修复 Django migration 时遇到的问题解决
今天想给自己的 Blog 加点功能,顺便补上测试,然而第一步在创建测试数据库就过不了,我就尝试解决这个问题. 在跑 ./manage.py test 时,先会创建一个测试用的数据库,这时我遇到了一个问题: ValueError: Related model 'telegrambot.User' cannot be resolved 这个错误是指,相关的 Model telegrambot.User 无法解析,这是怎么回事? 然后因为 ./manage.py test 根本没有打印出其他有用的信息
-
Django migrations 默认目录修改的方法教程
如何使用 migrations的使用非常简单: 修改model, 比如增加field, 然后运行 python manager.py makemigrations 你的mmodel会被扫描, 然后与之前的版本作比较, 在app的migrations目录下生成本次迁移文件. 我们建议查看一下该迁移文件, 确保没有问题. 然后运行: python manager.py migrate migrate命令会进行比较, 并应用该迁移. migrations 默认目录修改 群里看到个问题: migrati
-
详解重置Django migration的常见方式
根据django官方文档建议,开发过程中会把生成的migrations提交到git中.由于各种原因,会有一些场景需要重置migrations,故总结一些常用场景及解决办法. 场景一 不考虑数据库数据,可以完全清空数据库. 步骤: 删除所有migrations find . -path "*/migrations/*.py" -not -name "__init__.py" -delete find . -path "*/migrations/*.pyc&q
-
两万字详解Java Sring String的常见操作以及StringBuffer StringBuilder的区别
目录 前言 1. 定义字符串 2.字符串比较相等 equals 使用注意事项 3. 字符串常量池( 多图解析 ) 第一个列子解析: 第二个列子解析: 第三个列子解析: 第四个列子解析: 第五个列子解析: 第六个列子解析: 第七个列子解析: 第八个列子解析: 面试题:请解释String类中两种对象实例化的区别 4. 理解字符串不可变 5.字符, 字节与字符串 字节与字符串 小结 6. 字符串常见操作 6.1 字符串比较 6.2 字符串查找 6.3 字符串替换 6.4 字符串拆分 6.5 字符串截取
-
c语言详解动态内存分配及常见错误的解决
目录 为什么会有动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的错误 对NULL指针的解引用操作 越界访问 对非动态内存进行free 使用free释放动态开辟内存的一部分 对同一块动态内存多次释放 对动态内存内存忘记释放(内存泄漏) 为什么会有动态内存分配 内存使用方式有两种 1.创建一个变量 2.创建一个数组 int a = 1; int arr[10]; 但是这两种方式都有一些特点 1.空间是固定大小的,不会变 2.必须提前知道要开辟多少空间,必
-
详解Flutter中数据传递的方式
目录 1.构造方法传递 2.InheritedWidget 3.Notification 4.Stream & event_bus 在Flutter中,常见的数据传递一共有以下几种: 1.构造方法传递 Flutter的构造方法具备着dart语言的特点,参数具备可选状态,通过构造方法传递数据,可以很方便的将任意数据进行传递,平时开发中,A跳转B页面最常用的方法就是通过构造方法进行传递.比如我们最常见的Key就是通过构造一级一级向下传递的. 优点: 相邻页面之间传递数据非常方便,你不需要进行任何额外
-
详解Java8中Optional的常见用法
目录 一. 简介 二.Java8 之前,空指针异常判断 三.Optional的使用 1.创建Optional实例 2.访问 Optional 对象的值 3.返回默认值 4.返回异常 (常用) 5.转换值 6.过滤值 一. 简介 Opitonal是java8引入的一个新类,目的是为了解决空指针异常问题.本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空. Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现.但是 Optional
-
详解5种Java中常见限流算法
目录 01固定窗口 02滑动窗口 03漏桶算法 04令牌桶 05滑动日志 06分布式限流 07总结 1.瞬时流量过高,服务被压垮? 2.恶意用户高频光顾,导致服务器宕机? 3.消息消费过快,导致数据库压力过大,性能下降甚至崩溃? ...... 在高并发系统中,出于系统保护角度考虑,通常会对流量进行限流:不但在工作中要频繁使用,而且也是面试中的高频考点. 今天我们将图文并茂地对常见的限流算法分别进行介绍,通过各个算法的特点,给出限流算法选型的一些建议,并给出Java语言实现的代码示例. 01固定窗
-
详解基于django实现的webssh简单例子
本文介绍了详解基于django实现的webssh简单例子,分享给大家,具体如下: 说明 新建一个 django 程序,本文为 chain. 以下仅为简单例子,实际应用 可根据自己平台情况 进行修改. 打开首页后,需要输入1,后台去登录主机,然后返回登录结果. 正常项目 可以post 主机和登录账户,进行权限判断,然后去后台读取账户密码,进行登录. djang后台 需要安装以下模块 安装后会有一个版本号报错,不影响 channels==2.0.2 channels-redis==2.1.0 amq
-
详解Python的三种拷贝方式
在练习列表的操作的时候我发现赋值之后的列表会随着被赋值的列表改变而改变,就像是C语言中用指向同一实际变量的指针进行操作一样.这是因为Python中有三种拷贝方式:浅拷贝.深拷贝和赋值拷贝. 赋值拷贝就像是定义新指针并指向了同一内存区域,对任意一个列表名进行操作,其他的也会变化. 深拷贝的作用是完全拷贝一个列表A并赋值给另一列表B.以下是深度拷贝与列表操作的样例.记得在使用深拷贝的时候要引入copy包. import copy #对列表的增删改 numbers_Ori = ['one', 'two
-
详解docker-compose速度太慢解决方式
解决办法只有一个一个一个,那就是换源! 使用的是github的源基本都是超时,此时使用: curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 记得修改权限,否则会报错: sudo chmod +x /usr/local/bin/docker-compose 最后查看版本
-
详解spring security四种实现方式
spring security实现方式大致可以分为这几种: 1.配置文件实现,只需要在配置文件中指定拦截的url所需要权限.配置userDetailsService指定用户名.密码.对应权限,就可以实现. 2.实现UserDetailsService,loadUserByUsername(String userName)方法,根据userName来实现自己的业务逻辑返回UserDetails的实现类,需要自定义User类实现UserDetails,比较重要的方法是getAuthorities()
随机推荐
- AngularJS+Bootstrap3多级导航菜单的实现代码
- AngularJS控制器之间的通信方式详解
- CentOS下Redis数据库的基本安装与配置教程
- Tomcat之web应用的目录组成结构_动力节点Java学院整理
- Ubuntu常见错误问题的解决方法小结
- 一份老外写的XMLHttpRequest代码多浏览器支持兼容性
- C#静态变量与实例变量实例分析
- 浅谈C/C++中的static与extern关键字的使用详解
- Android Studio控制台出现中文乱码(方框)问题解决办法
- PHP处理bmp格式图片的方法分析
- ThinkPHP处理Ajax返回的方法
- js实现兼容PC端和移动端滑块拖动选择数字效果
- 详解node中创建服务进程
- Nginx重定向的配置实例
- Java实现Socket的TCP传输实例
- Java 常用类解析:java异常机制,异常栈,异常处理方式,异常链,异常丢失详解
- PHP详细彻底学习Smarty
- javascript 学习笔记(onchange等)
- Android自定义控件实现边缘凹凸的卡劵效果
- java递归读取目录下所有文件的方法