Django迁移报错怎么办

  介绍

这篇文章主要介绍Django迁移报错怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

前言

在讲解如何解决<代码> 报迁移错原因前,我们先要了解<代码> 迁移做了什么事情,<代码> :迁移将新生成的迁移脚本。映射到数据库中。创建新的表或者修改表的结构。

问题1:迁移怎么判断哪些迁移脚本需要执行吗?

它会将代码中的迁移脚本和数据库中<代码> django_migrations>

问题2:迁移做了什么事情

<李>

将相关的迁移脚本翻译成SQL语句,在数据库中执行这个SQL语句。

<李>

如果这个SQL语句执行没有问题,那么就会将这个迁移脚本的名字记录到<代码> django_migrations>

实战案例

当我们了解清楚<代码> 代码迁移的作用后,我们来看一个案例
首先我们创建一个项目<代码> orm_migrations_demo> 和<代码> ,代码结构如下图

 Django迁移报错怎么办“> <br/> </p> <p>接着在<代码> front.models.py </代码>和<代码> article.models。py> </代码中创建模型</p> <pre类= #, front.models.py   class 文章(models.Model):   ,,,name =, models.CharField (max_length=200)      #,article.models.py   class  FrontUser (models.Model):   ,,,name =, models.CharField (max_length=200)

接着在<代码>设置。py 的<代码> INSTALL_APPS> INSTALLED_APPS =, (   ,,,& # 39;django.contrib.admin& # 39;   ,,,& # 39;django.contrib.auth& # 39;   ,,,& # 39;django.contrib.contenttypes& # 39;   ,,,& # 39;django.contrib.sessions& # 39;   ,,,& # 39;django.contrib.messages& # 39;   ,,,& # 39;django.contrib.staticfiles& # 39;   ,,,& # 39;前# 39;   ,,,& # 39;文章# 39;   )

接着我们打开命令行,输入<代码> makemigrations文章> makemigrations面前> 0001。py> 接着我们执行<代码> 条迁移,再输入<代码> 面前,迁移迁移发现数据库中没有迁移脚本,那么就会执行刚才生成的2个迁移脚本,将迁移脚本翻译成SQL语句,然后创建了2张表,执行完成后,会将迁移脚本记录到<代码> django_migrations 表中,数据库中表结构如下:

 Django迁移报错怎么办

<代码> django_migrations 表中内容如下:

 Django迁移报错怎么办“> <br/> </p> <p>接下来我们在<代码> article.models。py> </代码中添加一个<代码> </代码>内容字段</p> <pre类= class 文章(models.Model):   ,,,name =, models.CharField (max_length=200)   ,,,content =, models.CharField (max_length=200,, null=True)

然后执行命令<代码> makemigrations文章> 0002。py> 条迁移,执行迁移脚本,此时数据库中表<代码> django_migrations>

 Django迁移报错怎么办“> <br/> </p> <p>现在我们来模仿错误信息内容,我们将数据库中<代码> django_migrations </代码>表中的<代码> 0002 _article_content </代码>这行记录删除,然后我们来看下0002 _article_content <代码> </代码>的代码</p> <pre类= class 迁移(migrations.Migration):      ,,,dependencies =, (   ,,,,,,,(& # 39;文章# 39;,,& # 39;_initial& # 39; 0001),   ,,,)      ,,,operations =, (   ,,,,,,,migrations.AddField (   ,,,,,,,,,,,model_name=& # 39;文章# 39;   ,,,,,,,,,,,的名字=& # 39;内容# 39;   ,,,,,,,,,,,字段=models.CharField (max_length=200,, null=True),   ,,,,,,,),   null

Django迁移报错怎么办