前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python manage.py migrate无效的问题

python manage.py migrate无效的问题

作者头像
用户2936342
发布2018-08-27 14:22:06
2.7K0
发布2018-08-27 14:22:06
举报
文章被收录于专栏:nummynummy

转自http://blog.csdn.net/qq_25730711/article/details/60327344

问题描述:

已有的model,修改之后,想重新建模,于是将migrations文件夹中除init.py 之外其他文件都删掉,再次执行以下步骤

代码语言:javascript
复制
python manage.py makemigrations

确认成功,执行

代码语言:javascript
复制
python manage.py migrate

提示No migrations to apply.

表示一脸懵逼。再次修改,指定表名,再次尝试,发现问题依旧,表示二脸懵逼 排查过程

代码语言:javascript
复制
python manage.py dbshell

进到数据库里面,查看是否表已存在 结果:表不存在 检查migrations文件 结果:文件没问题 百度 google 各种搜,乱投医,各种尝试

解决方案

代码语言:javascript
复制
python manage.py dbshell

进到数据库中,执行

代码语言:javascript
复制
delete from django_migrations where app='your_appname';
代码语言:javascript
复制
python manage.py makemigrations

(若migrations文件未删除,可不执行这一步)

代码语言:javascript
复制
python manage.py migrate

好啦,大功告成

原因分析

查看django_migrations表结构 建表语句:

代码语言:javascript
复制
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,旧的就不必理会了

题外话

执行

代码语言:javascript
复制
python manage.py migrate

之后,可以使用

代码语言:javascript
复制
python manage.py sqlmigrate appname migrations_num

例如

代码语言:javascript
复制
python manage.py sqlmigrate user 0002

查看当前migrations文件对应的sql语句。 另外,在使用上述命令查看0002文件的sql语句时发现,django会新建一个表user_new,然后插入user表中的数据,再把user表删掉,再把user_new重命名为user。所以,修改model的时候,不必担心原有数据会丢失。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.07.12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述:
  • 解决方案
  • 原因分析
  • 原因
  • 避免方案
  • 题外话
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档