美文网首页
django(9)ORM模型迁移

django(9)ORM模型迁移

作者: xinmin | 来源:发表于2019-04-13 20:41 被阅读0次

makemigrations生成迁移脚本

1、python manage.py makemigrations:默认给所有APP生成迁移脚本
2、python manage.py makemigrations app名称:给指定的APP生成迁移脚本
3、python manage.py makemigrations app名称 --name "remove_xxx":给指定APP生成迁移脚本,并自定义生成生成的迁移脚本文件的名称

migrate怎么判断哪些迁移脚本需要执行:

他会将代码中的迁移脚本和数据库中django_migrations中的迁移脚本进行对比,如果发现数据库中,没有这个迁移脚本,那么就会执行这个迁移脚本。

migrate做了什么事情:

  1. 将相关的迁移脚本翻译成SQL语句,在数据库中执行这个SQL语句。
  2. 如果这个SQL语句执行没有问题,那么就会将这个迁移脚本的名字记录到django_migrations中。

执行migrate命令的时候报错的解决办法:

原因:

执行migrate命令会报错的原因是。数据库的django_migrations表中的迁移版本记录和代码中的迁移脚本不一致导致的。

解决办法:

使用--fake参数:

首先对比数据库中的迁移脚本和代码中的迁移脚本。然后找到哪个不同,之后再使用--fake,将代码中的迁移脚本添加到django_migrations中,但是并不会执行sql语句。这样就可以避免每次执行migrate的时候,都执行一些重复的迁移脚本。

终极解决方案:

如果代码中的迁移脚本和数据库中的迁移脚本实在太多,就是搞不清了。那么这时候就可以使用以下终极解决方案:

  1. 终极解决方案原理:就是将之前的那些迁移脚本都不用了。重新来过。要将出问题的app下的所有模型和数据库中表保持一致,重新映射。
  2. 将出问题的app下的所有模型,都和数据库中的表保持一致。
  3. 将出问题的app下的所有迁移脚本文件都删掉。再在django_migrations表中将出问题的app相关的迁移记录都删掉。
  4. 使用makemigrations,重新将模型生成一个迁移脚本。
  5. 使用migrate --fake-initial参数,将刚刚生成的迁移脚本,标记为已经完成(因为这些模型相对应的表,其实都已经在数据库中存在了,不需要重复执行了。)
  6. 可以做其他的映射了。

相关文章

  • django(9)ORM模型迁移

    makemigrations生成迁移脚本 1、python manage.py makemigrations:默认...

  • 4.8 django ORM模型迁移

    ORM模型迁移 迁移命令: makemigrations:将模型生成迁移脚本。模型所在的app,必须放在setti...

  • django一、模型详解(model)——操作数据库

    一、 django模型(model) Django中引用了ORM(Objects Relational Mappi...

  • Flask-day03

    一、Flask-Migrate插件(模型迁移) 数据迁移Django中,模型创建好只需要创建迁移文件,执行迁移文件...

  • django orm - 模型

    django 模型是数据库中表的映射,也叫对象关系映射(Object Relational Mapping,简称O...

  • Flask(1)

    Django框架---web后端框架 Django重量级框架 模型类--->ORM映射 管理后台 Flask 轻量...

  • Flask框架

    Django框架---web后端框架 Django重量级框架模型类--->ORM映射对象关系映射(Object R...

  • 2018-11-29Djenv模型

    内容: 模型定义、字段定义、约束定义、迁移、ORM(对象关系映射)、DEBUG(断点调试) 模型定义, 在mode...

  • Django-MTV

    MTV模型 Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Templa...

  • Django模型基础中模型的创建与映射(十九)

    一、django模型的映射关系(ORM): 模型类必须都写在app下的models.py文件中。 模型如果需要映射...

网友评论

      本文标题:django(9)ORM模型迁移

      本文链接:https://www.haomeiwen.com/subject/jldmiqtx.html