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实现一个简单的项目监控
Mar 31 Python
python下载文件时显示下载进度的方法
Apr 02 Python
Python脚本实现12306火车票查询系统
Sep 30 Python
在python中pandas的series合并方法
Nov 12 Python
NumPy中的维度Axis详解
Nov 26 Python
基于pytorch 预训练的词向量用法详解
Jan 06 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
Jun 15 Python
python实现猜数游戏(保存游戏记录)
Jun 22 Python
Python drop方法删除列之inplace参数实例
Jun 27 Python
通过实例了解Python异常处理机制底层实现
Jul 23 Python
python 用Matplotlib作图中有多个Y轴
Nov 28 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
Dec 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
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
用php解析html的实现代码
2011/08/08 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
无阻塞加载脚本分析[全]
2011/01/20 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
详解Node.js串行化流程控制
2017/05/04 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
Python解析json文件相关知识学习
2016/03/01 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
澳大利亚正品化妆品之家:Cosmetic Capital
2017/07/03 全球购物
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
大学生应聘求职信
2014/05/26 职场文书
中考标语大全
2014/06/05 职场文书
公证处委托书
2015/01/28 职场文书
爱国电影观后感
2015/06/19 职场文书
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS