首页 > 解决方案 > Django 如何摆脱迁移错误

问题描述

我正在使用 Django;当我更改模型时,每次都会出错。

我只更改模型中的一个字段,并且每次都愚蠢地出现很多错误

django.db.utils.OperationalError:没有这样的表:

或者

django.db.migrations.exceptions.InconsistentMigrationHistory:

或者

OperationalError 没有这样的列:table.colunm

或者

django.db.utils.OperationalError:“表已经存在”

和 bla bla bla ..

我可能在 Django 中得到了所有错误类型,现在它真的很困扰我。

我每次都在尝试所有解决方案:

我能找到的每一个解决方案。

愚蠢地尝试所有解决方案,并且;最后,是的,我可以找到解决方案,但是,我现在真的很厌倦这个愚蠢的错误。

有什么办法可以摆脱 Django 中的迁移错误?只有我需要这个答案;'当我只更改一个模型字段时,为什么我每次都会收到这些疯狂的错误????!!!?'

例如 :

这是我的模型:

from django.db import models
from django.conf import settings
from etahfiz.sabitler import DERS_SEVIYESI

# Create your models here.
class Student(models.Model):
    systemId     = models.CharField(max_length=15, unique=True )
    adSoyad   = models.CharField(max_length=20, blank=True)
    dersSeviyesi = models.CharField(max_length=15,choices=DERS_SEVIYESI )
    def __str__(self):
        return str(self.systemId)

class Teacher(models.Model):
    systemId = models.CharField(max_length=15 , unique=True)
    user   = models.OneToOneField(settings.AUTH_USER_MODEL)
    adSoyad   = models.CharField(max_length=20, blank=True)
    def __str__(self):
        return str(self.systemId)

class StuTeach(models.Model):
    student = models.ForeignKey(Talebe)
    teacher = models.ForeignKey(Hoca)
    tarihBas = models.DateField()
    tarihBit = models.DateField(blank=True, null=True)

这工作得很好,但是;我只想向教师模型添加一个字段:

dersSeviyesi = models.CharField(max_length=15,choices=DERS_SEVIYESI )

教师模型现在是这样的:

class Teacher(models.Model):
    systemId = models.CharField(max_length=15 , unique=True)
    user   = models.OneToOneField(settings.AUTH_USER_MODEL)
    adSoyad   = models.CharField(max_length=20, blank=True)
    dersSeviyesi = models.CharField(max_length=15,choices=DERS_SEVIYESI )
    def __str__(self):
        return str(self.systemId)

当我尝试迁移时:

python manage.py makemigrations sinif 
python manage.py migrate 

error error error django.db.utils.OperationalError: "表已经存在"

或之类的..

每次只更改一个字段,就会得到 Django 的所有错误......

我怎样才能摆脱这种类型的错误?

谢谢你。

标签: djangomigrationmigratedjango-databasedjango-errors

解决方案


转到您的数据库并找到迁移表并删除条目。然后再次运行迁移。这时候你可能会面临 ContentType 已经存在。然后删除 content_type 表。或者,最简单的解决方案是删除数据库并重新创建,但是如果您有重要数据,则所有数据都会丢失。


推荐阅读