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. Или, самое простое решение - удалить базу данных и создать заново, но если у вас есть важные данные, все данные будут потеряны.