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 相关文章推荐
centos 下面安装python2.7 +pip +mysqld
Nov 18 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
May 21 Python
Python深入06——python的内存管理详解
Dec 07 Python
Python使用numpy模块创建数组操作示例
Jun 20 Python
Python函数any()和all()的用法及区别介绍
Sep 14 Python
Python最小二乘法矩阵
Jan 02 Python
Python流程控制 while循环实现解析
Sep 02 Python
python读取raw binary图片并提取统计信息的实例
Jan 09 Python
python3 deque 双向队列创建与使用方法分析
Mar 24 Python
Python run()函数和start()函数的比较和差别介绍
May 03 Python
Django全局启用登陆验证login_required的方法
Jun 02 Python
python语言是免费还是收费的?
Jun 15 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运行环境配置与开发环境的配置(图文教程)
2013/06/04 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
2016/01/05 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
Python实现的简单万年历例子分享
2014/04/25 Python
Python实现线程池代码分享
2015/06/21 Python
浅谈Python中的闭包
2015/07/08 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
2018/07/04 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
校长岗位职责
2013/11/26 职场文书
人资专员岗位职责
2014/04/04 职场文书
爱心捐助倡议书
2014/05/19 职场文书
授权委托书格式范文
2014/08/02 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
于丹论语心得观后感
2015/06/15 职场文书
六年级语文教学反思
2016/03/03 职场文书
Mysql文件存储图文详解
2021/06/01 MySQL
用JS实现飞机大战小游戏
2021/06/09 Javascript
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android