Django Как избавиться от ошибок миграции

Я использую Django; и когда я меняю модель, каждый раз получаю ошибку.

Я изменяю только одно поле в модели и получаю глупо много ошибок ВСЕГДА.

django.db.utils.OperationalError: нет такой таблицы:

или же

django.db.migrations.exceptions.InconsistentMigrationHistory:

или же

OperationalError нет такого столбца: table.colunm

или же

django.db.utils.OperationalError: "Таблица уже существует"

и бла бла бла..

Я получил, возможно, все типы ошибок в 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)

Это работало отлично, НО; Я хотел добавить только одно поле в модель учителя:

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 ответ

Зайдите в свою базу данных и найдите таблицу миграций, а также удалите записи. Затем снова запустите миграцию. В это время вы можете столкнуться с тем, что ContentType уже существует. Затем удалите таблицу content_type. Или, самое простое решение - удалить базу данных и создать заново, но если у вас есть важные данные, все данные будут потеряны.

Другие вопросы по тегам