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

作者:Jessie-via 时间:2021-08-18 02:28:51 

问题描述:

已有的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的时候,不必担心原有数据会丢失。

来源:https://blog.csdn.net/qq_25730711/article/details/60327344

标签:manage.py,migrate,django
0
投稿

猜你喜欢

  • python 实现Harris角点检测算法

    2023-08-03 08:08:31
  •  python用matplotlib可视化绘图详解

    2022-04-20 02:38:42
  • mysql查询每小时数据和上小时数据的差值实现思路详解

    2024-01-20 08:31:31
  • Python Scrapy爬虫框架使用示例浅析

    2023-01-28 16:27:45
  • python根据出生日期返回年龄的方法

    2023-10-10 23:04:53
  • 什么是Python变量作用域

    2021-12-25 21:36:24
  • 浅谈function(函数)中的动态参数

    2023-08-11 10:23:59
  • 解决使用export_graphviz可视化树报错的问题

    2022-06-10 18:35:59
  • Python生成一个迭代器的实操方法

    2022-05-08 09:34:32
  • Python3 执行Linux Bash命令的方法

    2023-11-03 06:47:15
  • vue+elementUi图片上传组件使用详解

    2024-05-10 14:14:49
  • 基于Python实现新年倒计时

    2022-02-14 08:41:59
  • 如何运行Python程序的方法

    2023-01-13 07:56:03
  • Django项目连接MongoDB的三种方法

    2022-05-27 05:23:43
  • Python实现合并excel表格的方法分析

    2022-04-24 21:30:22
  • Python 格式化输出字符串的方法(输出字符串+数字的几种方法)

    2021-05-03 21:25:00
  • Flask 使用工厂模式

    2021-10-01 01:52:58
  • TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南

    2023-07-30 10:28:08
  • GO语言基本数据类型总结

    2024-02-06 08:14:27
  • Python简单实现图片转字符画的实例项目

    2023-02-24 02:01:47
  • asp之家 网络编程 m.aspxhome.com