前言

在使用ORM建表的时候,由于需要对数据库表的重新设计,需要删除原表,并通过Django的ORM功能重新同步表。

删除表之后,发现用 makemigrations 和 migrate 无法生成新的表了。

遇到问题

当我新建一个 Model ,同步完数据库后,再修改里面的字段名称,发现无法同步到数据库,于是就把数据库里面的整张表删除了。

结果再同步数据库就无法生成新的表了,就算删除 migrations 目录下的0001_initial.py文件也一样。

# 新建了一个PersonIn类,继承自models.Model,
class PersonIn(models.Model):
uid = models.IntegerField(primary_key=True)
name = models.CharField(max_length=30)
agex = models.IntegerField()

删除 migrations 目录下的0001_initial.py文件

执行 makemigrations 和 migrate 无法生成新的表了

D:\soft\MyDjango>python manage.py makemigrations
Migrations for 'yoyo':
yoyo\migrations\0001_initial.py
- Create model PersonIn D:\soft\MyDjango>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions, yoyo
Running migrations:
No migrations to apply. D:\soft\MyDjango>

结果没生成新的表

解决办法1

如果删除后,无法自动生成,首先想到的解决办法,可以先查询到建表的sql,自己去执行sql建表

python manage.py sqlmigrate your_app_name 0001

cmd执行上面的命令,your_app_name 换成自己的 app 名称

D:\soft\MyDjango>python manage.py sqlmigrate yoyo 0001
BEGIN;
--
-- Create model PersonIn
--
CREATE TABLE `yoyo_personin` (`uid` integer NOT NULL PRIMARY KEY, `name` varchar(30) NOT NULL, `agex` integer NOT NULL);
COMMIT;

于是得到建表的SQL,去数据库执行下就可以了

解决办法2

上面的办法只能从表面上解决问题,不能解决根本问题,根本的原因是因为在 django_migrations 表里面已经生成表记录了。

执行 SQL 删除app相关的记录

delete from django_migrations where app=' your_app_name'

执行完成后,再执行makemigrations 和 migrate就可以同步成功了

D:\soft\MyDjango>python manage.py makemigrations
No changes detected D:\soft\MyDjango>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions, yoyo
Running migrations:
Applying yoyo.0001_initial... OK

看到 OK 说明成功了

python测试开发django-72.删除表后如何重新生成表的更多相关文章

  1. python测试开发django-16.JsonResponse返回中文编码问题

    前言 django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3默认返回的编码 遇到问题 接着前面 ...

  2. python测试开发django-rest-framework-63.基于函数的视图(@api_view())

    前言 上一篇讲了基于类的视图,在REST framework中,你也可以使用常规的基于函数的视图.它提供了一组简单的装饰器,用来包装你的视图函数, 以确保视图函数会收到Request(而不是Djang ...

  3. python测试开发django-197.django-celery-beat 定时任务

    前言 django-celery-beat 可以支持定时任务,把定时任务写到数据库. 接着前面这篇写python测试开发django-196.python3.8+django2+celery5.2.7 ...

  4. python测试开发django-36.一对一(OneToOneField)关系查询

    前言 前面一篇在xadmin后台一个页面显示2个关联表(OneToOneField)的字段,使用inlines内联显示.本篇继续学习一对一(OneToOneField)关系的查询. 上一篇list_d ...

  5. python测试开发django-15.查询结果转json(serializers)

    前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ...

  6. 2019第一期《python测试开发》课程,10月13号开学

    2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...

  7. 【python测试开发栈】python基础语法大盘点

    周边很多同学在用python,但是偶尔会发现有人对python的基础语法还不是特别了解,所以帮大家梳理了python的基础语法(文中的介绍以python3为例).如果你已然是python大牛,可以跳过 ...

  8. python web开发——django学习(一)第一个连接mysql数据库django网站运行成功

    1.新建一个项目 2.新建一些文件夹方便管理 3.新建一个项目叫message  4.连接数据库 python web开发Django连接mysql 5.在数据库里自动生成django的表  6.运行 ...

  9. Python测试开发-创建模态框及保存数据

    Python测试开发-创建模态框及保存数据 原创: fin  测试开发社区  前天 什么是模态框? 模态框是指的在覆盖在父窗体上的子窗体.可用来做交互,我们经常会看到模态框用来登录.确定等等,到底是怎 ...

随机推荐

  1. Appium入门指南 - 环境搭建和Case编写

    本文档将详细介绍如何搭建 Appium 的运行环境,以及如何编写一个简单的 UI 自动化测试用例.其中,也会穿插讲解一些 Appium 的基本知识.关于 Appium 的更多信息,大家可以查看官方文档 ...

  2. VSCode编写C/C++语言,配置文件和注意事项

    前言 主要是自己先下载好VSCode,然后在自己电脑上安装好就行了,但是VSCode是编辑器,不是IDE,所以需要自己配置文件,主要有四个都是以.json结尾的文件,这里默认已经装过C/C++的编辑器 ...

  3. [LeetCode] 834. Sum of Distances in Tree 树中距离之和

    An undirected, connected tree with N nodes labelled 0...N-1 and N-1 edges are given. The ith edge co ...

  4. 团队作业第五次—项目冲刺-Day5

    Day5 part1-SCRUM: 项目相关 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 hunter--冲刺集合 团队名称 hunte ...

  5. 多线程下的HashMap竟然绕环了

    导读:早就听说过HashMap不是线程安全的,在多线程情况下可能会出问题,自己一直是一知半解,正好五一有时间就抽时间来研究一下. 关键词:线程安全,HashMap 直接上图 总结 看过的知识点不一定属 ...

  6. 关于App收集个人信息基本规范,这里公开征求你的意见!

    关于App收集个人信息基本规范,这里公开征求你的意见! https://www.thepaper.cn/newsDetail_forward_4122573 以后国家开始规范App收集个信息基本规范, ...

  7. 第25课 std::thread对象的析构

    一. 线程的等待与分离 (一)join和detach函数 1. 线程等待:join() (1)等待子线程结束,调用线程处于阻塞模式. (2)join()执行完成之后,底层线程id被设置为0,即join ...

  8. alicebot

    一.   为什么Alice不支持中文因为Alice的question都会被bitoflife.chatterbean.text.Transformations类中的fit函数过滤,而过滤的表达式就是: ...

  9. Sitecore性化 - 您需要了解的4件事

    Sitecore非常强大,是一个数字体验平台.它可以帮助您取悦并留住客户.它可以帮助您衡量和评估广告系列.它使你成为一个更好的营销人员.它可以帮助您获得结果! 它结合了易于使用的网站内容管理系统和数字 ...

  10. 使用Prometheus+Grafana监控JVM

    一.概述 JMX Exporter https://github.com/prometheus/jmx_exporter 它是Prometheus官方组件,作为一个JAVA Agent来提供本地JVM ...