django 解决manage.py migrate无效的问题


Posted in Python onMay 27, 2018

问题描述:

已有的model,修改之后,想重新建模,于是将migrations文件夹中除__init__.py之外其他文件都删掉,再次执行以下步骤python manage.py makemigrations确认成功,执行python manage.py migrate,提示No migrations to apply. 表示一脸懵逼。再次修改,指定表名,再次尝试,发现问题依旧,表示二脸懵逼

排查过程

python manage.py dbshell 进到数据库里面,查看是否表已存在

结果:表不存在

检查migrations文件

结果:文件没问题

百度 google 各种搜,乱投医,各种尝试

解决方案

python manage.py dbshell 进到数据库中,执行delete from django_migrations where app='your_appname';

python manage.py makemigrations(若migrations文件未删除,可不执行这一步)

python manage.py migrate 好啦,大功告成

原因分析

查看django_migrations表结构

建表语句:

CREATE TABLE "django_migrations" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "app" varchar(255) NOT NULL, "name" varchar(255) NOT NULL, "applied" datetime NOT NULL);

原因

造成多次应用migrations失败的原因是,当前model是修改过的,原来的migrations已经被我删除,但是,重新生成的migrations使用递增整数记名,所以,在django_migrations表中0001,0002等前面几个数字的文件都已被记录,在Django看来,被记录了就相当于已应用,所以,会出现刚开始的No migrations to apply.

避免方案

有强迫症删除migrations文件的同学(比如我),请同时到数据库中删除相应记录

没有强迫症的同学,可以继续生成新的migrations,旧的就不必理会了

题外话

执行python manage.py migrate之后,可以使用python manage.py sqlmigrate appname migrations_num(例如python manage.py sqlmigrate user 0002)查看当前migrations文件对应的sql语句。

另外,在使用上述命令查看0002文件的sql语句时发现,django会新建一个表user_new,然后插入user表中的数据,再把user表删掉,再把user_new重命名为user。所以,修改model的时候,不必担心原有数据会丢失。

以上这篇django 解决manage.py migrate无效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中optionParser模块的使用方法实例教程
Aug 29 Python
Python中模拟enum枚举类型的5种方法分享
Nov 22 Python
浅谈Python中函数的参数传递
Jun 21 Python
详解Python 序列化Serialize 和 反序列化Deserialize
Aug 20 Python
Python操作Oracle数据库的简单方法和封装类实例
May 07 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
Aug 04 Python
Python实现查找数组中任意第k大的数字算法示例
Jan 23 Python
Python中turtle库的使用实例
Sep 09 Python
python判断无向图环是否存在的示例
Nov 22 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
May 17 Python
python装饰器代码解析
Mar 23 Python
关于django 数据库迁移(migrate)应该知道的一些事
May 27 #Python
解决Django migrate No changes detected 不能创建表的问题
May 27 #Python
django 在原有表格添加或删除字段的实例
May 27 #Python
用python写扫雷游戏实例代码分享
May 27 #Python
和孩子一起学习python之变量命名规则
May 27 #Python
儿童学习python的一些小技巧
May 27 #Python
django初始化数据库的实例
May 27 #Python
You might like
短波问题解答
2021/02/28 无线电
强烈推荐:php.ini中文版(1)
2006/10/09 PHP
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
JS继承 笔记
2011/07/13 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
vue实现匀速轮播效果
2020/06/29 Javascript
javascript实现时钟动画
2020/12/03 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
Django CBV类的用法详解
2019/07/26 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
计算机专业个人简短的自我评价
2013/10/23 职场文书
电子技术专业中专生的自我评价
2013/12/17 职场文书
财务会计专业求职信
2014/06/09 职场文书
2014年保管员工作总结
2014/11/18 职场文书
入党积极分子个人总结
2015/03/02 职场文书
秋菊打官司观后感
2015/06/03 职场文书