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使用marshal模块序列化实例
Sep 25 Python
python操作mysql中文显示乱码的解决方法
Oct 11 Python
python自然语言编码转换模块codecs介绍
Apr 08 Python
Python中的多重装饰器
Apr 11 Python
利用python程序生成word和PDF文档的方法
Feb 14 Python
对Python中9种生成新对象的方法总结
May 23 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
python读取一个目录下所有txt里面的内容方法
Jun 23 Python
Python 中的lambda函数介绍
Oct 10 Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 Python
Python3 把一个列表按指定数目分成多个列表的方式
Dec 25 Python
Python pip配置国内源的方法
Feb 14 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原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
php如何连接sql server
2015/10/16 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
Javascript无阻塞加载具体方式
2013/06/28 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
Python 的 with 语句详解
2014/06/13 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
python查看矩阵的行列号以及维数方式
2020/05/22 Python
Django-Scrapy生成后端json接口的方法示例
2020/10/06 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
亿企通软件测试面试题
2012/04/10 面试题
两道JAVA笔试题
2016/09/14 面试题
个人求职信范文分享
2014/01/06 职场文书
作弊检讨书1000字
2014/02/01 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
2015年派出所工作总结
2015/04/24 职场文书
女性健康讲座主持词
2015/07/04 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis