Django如何摆脱迁移错误

时间:2018-12-25 06:29:51

标签: django migration migrate django-database django-errors

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

我仅更改模型中的一个字段,并且愚蠢地得到很多错误每次

  

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

  

django.db.migrations.exceptions.InconsistentMigrationHistory:

  

OperationalError没有这样的列:table.colunm

  

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

和bla bla bla ..

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

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

  • 删除迁移
  • 查找。 -path“ / migrations / .py”-不是-name“ init .py”-删除
  • 查找。 -path“ / migrations / .pyc”-删除
  • 清除每个应用的迁移历史记录
  • 删除实际的迁移文件。
  • 创建初始迁移
  • 进行初始迁移
  • python manage.py migration --fake
  • python manage.py migration --fake-initial
  • python manage.py migration --run-syncdb
  • 删除数据库

我能找到的所有解决方案。

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

有什么方法可以消除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 
  

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

还是那样……

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

如何摆脱此类错误?

谢谢。

1 个答案:

答案 0 :(得分:0)

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