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+Django在windows下的开发环境配置图解
Nov 11 Python
Python常用随机数与随机字符串方法实例
Apr 09 Python
python 字典(dict)按键和值排序
Jun 28 Python
详解python中的json和字典dict
Jun 22 Python
详解django的serializer序列化model几种方法
Oct 16 Python
django 简单实现登录验证给你
Nov 06 Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 Python
Django认证系统user对象实现过程解析
Mar 02 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
基于jupyter代码无法在pycharm中运行的解决方法
Apr 21 Python
在PyCharm中安装PaddlePaddle的方法
Feb 05 Python
python 字典和列表嵌套用法详解
Jun 29 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的FTP学习(一)
2006/10/09 PHP
php 之 没有mysql支持时的替代方案
2006/10/09 PHP
解析php取整的几种方式
2013/06/25 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
2016/05/21 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
JS字符串拼接在ie中都报错的解决方法
2014/03/27 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
express启用https使用小记
2019/05/21 Javascript
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
python中根据字符串调用函数的实现方法
2016/06/12 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
四风存在的原因分析
2014/02/11 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
自主招生学校推荐信
2014/09/26 职场文书
质量保证书格式
2015/02/27 职场文书
MYSQL 运算符总结
2021/11/11 MySQL
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL