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 参数列表中的self 显式不等于冗余
Dec 01 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
Django的models中on_delete参数详解
Jul 16 Python
Python测试Kafka集群(pykafka)实例
Dec 23 Python
python求前n个阶乘的和实例
Apr 02 Python
Python手动或自动协程操作方法解析
Jun 22 Python
通过实例解析Python RPC实现原理及方法
Jul 07 Python
python修改微信和支付宝步数的示例代码
Oct 12 Python
python通用数据库操作工具 pydbclib的使用简介
Dec 21 Python
Python用户自定义异常的实现
Dec 25 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 Python
OpenCV-Python实现油画效果的实例
Jun 08 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
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
js sort 二维数组排序的用法小结
2014/01/24 Javascript
浅谈Javascript中的Function与Object
2015/01/26 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
如何使用angularJs
2017/05/08 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
Flask之flask-script模块使用
2018/07/26 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
几款好用的python工具库(小结)
2020/10/20 Python
微软美国官方网站:Microsoft美国
2018/05/10 全球购物
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
党员一句话承诺大全
2014/03/28 职场文书
商务英语专业求职信
2014/06/26 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
2014年加油站工作总结
2014/12/04 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
学习保证书
2015/01/17 职场文书
社区元宵节活动总结
2015/02/06 职场文书
2015年人事科工作总结
2015/04/28 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
浅谈如何提高PHP代码质量之单元测试
2021/05/28 PHP
数据库之SQL技巧整理案例
2021/07/07 SQL Server