【问题标题】:Django How to Get rid of Migration ErrorsDjango 如何摆脱迁移错误
【发布时间】:2019-05-23 23:59:29
【问题描述】:

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

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

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

django.db.migrations.exceptions.InconsistentMigrationHistory:

OperationalError 没有这样的列:table.colunm

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

和bla bla bla ..

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

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

  • 删除迁移
  • 找到 . -path "/migrations/.py" -not -name "init.py" -delete
  • 找到 . -path "/migrations/.pyc" -delete
  • 清除每个应用的迁移历史记录
  • 删除实际的迁移文件。
  • 创建初始迁移
  • 伪造初始迁移
  • python manage.py migrate --fake
  • python manage.py migrate --fake-initial
  • python manage.py migrate --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)

这是完美的工作,但是;我只想向 Teacher 模型添加一个字段:

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 的所有错误...

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-01-03
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多