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实现360的字符显示界面
Feb 21 Python
python使用电子邮件模块smtplib的方法
Aug 28 Python
Python中selenium实现文件上传所有方法整理总结
Apr 01 Python
Python OpenCV实现图片上输出中文
Jan 22 Python
对Python中的@classmethod用法详解
Apr 21 Python
python绘制圆柱体的方法
Jul 02 Python
局域网内python socket实现windows与linux间的消息传送
Apr 19 Python
如何获取Python简单for循环索引
Nov 21 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
Feb 13 Python
python实现最短路径的实例方法
Jul 19 Python
python基于openpyxl生成excel文件
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支持页面回退的两种方法[转]
2007/02/14 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
教你在header中隐藏php的版本信息
2016/08/10 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
js Select下拉列表框进行多选、移除、交换内容的具体实现方法
2013/08/13 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
jQuery实现点击小图显示大图代码分享
2015/08/25 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
Python编程修改MP3文件名称的方法
2017/04/19 Python
python使用生成器实现可迭代对象
2018/03/20 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
英文版银行求职信
2013/10/09 职场文书
实习鉴定范文
2013/12/19 职场文书
物业管理工作方案
2014/05/10 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
后勤工作个人总结
2015/02/28 职场文书
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python