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的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
Apache如何部署django项目
May 21 Python
Python实现发送QQ邮件的封装
Jul 14 Python
python实现Floyd算法
Jan 03 Python
pygame游戏之旅 添加碰撞效果的方法
Nov 20 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
Feb 13 Python
关于pytorch多GPU训练实例与性能对比分析
Aug 19 Python
python获取网络图片方法及整理过程详解
Dec 20 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
Python基于time模块表示时间常用方法
Jun 18 Python
Virtualenv 搭建 Py项目运行环境的教程详解
Jun 22 Python
Python获取字典中某个key的value
Apr 13 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
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
jQuery列表检索功能实现代码
2017/07/17 jQuery
使用yeoman构建angular应用的方法
2017/08/14 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
监听element-ui table滚动事件的方法
2019/03/26 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
使用Python & Flask 实现RESTful Web API的实例
2017/09/19 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
2018/04/05 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
教师应聘自荐信范文
2014/03/14 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
Django migrate报错的解决方案
2021/05/20 Python
MySQL笔记 —SQL运算符
2022/01/18 MySQL