django 解决manage.py migrate无效的问题

 更新时间:2018年05月27日 16:04:31   作者:Jessie-via  
今天小编就为大家分享一篇django 解决manage.py migrate无效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

问题描述:

已有的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无效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Pandas+Matplotlib 箱式图异常值分析示例

    Pandas+Matplotlib 箱式图异常值分析示例

    今天小编就为大家分享一篇Pandas+Matplotlib 箱式图异常值分析示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 如何用Python来搭建一个简单的推荐系统

    如何用Python来搭建一个简单的推荐系统

    这篇文章主要介绍了如何用Python来搭建一个简单的推荐系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python assert的用处示例详解

    python assert的用处示例详解

    python assert 句语格式及用法很简单。通常程序在运行完之后抛出异常,使用assert可以在出现有异常的代码处直接终止运行。这篇文章通过实例代码介绍了python assert的用处 ,需要的朋友可以参考下
    2019-04-04
  • python爬虫之爬取百度音乐的实现方法

    python爬虫之爬取百度音乐的实现方法

    今天小编就为大家分享一篇python爬虫之爬取百度音乐的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python文件操作类操作实例详解

    Python文件操作类操作实例详解

    这篇文章主要介绍了Python文件操作类操作实例代码,需要的朋友可以参考下
    2014-07-07
  • Matplotlib中文乱码的两种详细解决方案

    Matplotlib中文乱码的两种详细解决方案

    最近手头有公司的数据资源,正好拿来练习了matplotlib的画图,期间碰到一个坑,就是中文在图表中显示的是方框,下面这篇文章主要给大家介绍了关于Matplotlib中文乱码的两种详细解决方案,需要的朋友可以参考下
    2022-07-07
  • 22个Python的万用公式分享

    22个Python的万用公式分享

    在大家的日常python程序的编写过程中,都会有自己解决某个问题的解决办法,或者是在程序的调试过程中,用来帮助调试的程序公式。小编通过几十万行代码的总结处理,总结出了22个python万用公式,可以帮助大家解决在日常的python编程中遇到的大多数问题,一起来看看吧
    2022-12-12
  • Pandas实现DataFrame的简单运算、统计与排序

    Pandas实现DataFrame的简单运算、统计与排序

    本文主要介绍了Pandas实现DataFrame的简单运算、统计与排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • Python中paramiko模块的基础操作与排错问题

    Python中paramiko模块的基础操作与排错问题

    python的ssh库操作需要引入一个远程控制的模块——paramiko,可用于对远程服务器进行命令或文件操作,这篇文章主要介绍了Python学习之paramiko模块的基础操作与排错,需要的朋友可以参考下
    2022-09-09
  • pandas:get_dummies()与pd.factorize()的用法及区别说明

    pandas:get_dummies()与pd.factorize()的用法及区别说明

    这篇文章主要介绍了pandas:get_dummies()与pd.factorize()的用法及区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05

最新评论