Миграция не создает столбец в базе данных

makemigrations и migrate работают нормально без ошибок. но когда я проверяю базу данных, она не создается

представляет собой модель:

class Services(models.Model):
    service_id = models.AutoField(primary_key=True)
    parent_id = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True,related_name='sub_service')
    service_name = models.CharField(max_length=100)
    service_icon = models.CharField(max_length=500, null=True, blank=True)
    service_image = models.CharField(max_length=500, null=True, blank=True)
    category_id = models.ForeignKey(Category,on_delete=models.CASCADE)
    active_status = models.BooleanField(default=True)
    type = models.SmallIntegerField(blank=True, null=True)
    service_description = models.TextField( null=True, blank=True)
    duration = models.CharField(max_length=100,null=True,blank=True)

Я добавил поле duration позже и оно не дает мне никакой ошибки при запуске api

django.db.utils.ProgrammingError: column service_list_services.duration does not exist
LINE 1: ...", "service_list_services"."service_description", "service_l...
 
                                                        
  1. i have tried deleting migration files and then migrating but still.. its not giving error while migrating but doesnot create row.

  2. tried this python manage.py migrate --fake still same

Исходя из вашей ситуации (удаление + воссоздание всех миграций может вызвать другие проблемы, такие как круговые зависимости, в зависимости от того, как построены модели), я вижу два сценария:

  1. Сценарий разработки (можно отказаться от таблиц db)

Перезапуск с чистой персистенцией: сбросьте таблицы БД, удалите файлы миграций, снова выполните команды makemigrations и migrate и зафиксируйте новый файл миграций

  1. Производственный сценарий (нельзя потерять данные)

Восстановите удаленный файл миграции, исправьте несоответствия в БД или в файле вручную, если вы изменили что-то по ошибке, когда код и БД синхронизированы, сделайте изменения снова и убедитесь, что используете миграции каждый раз, когда вам нужно изменить персистентность. , используя команды makemigrations и migrate.

Если код и БД синхронизированы, можно использовать команду squashmigrations

В общем случае: Избегайте удаления предыдущего файла миграции, так как это может вызвать проблемы с зависимостями при других миграциях. Из Django doc:

Вам предлагается свободно выполнять миграции и не беспокоиться о том, сколько их у вас будет; код миграции оптимизирован для работы с сотнями людей. их количество; код миграции оптимизирован для работы с сотнями за раз без значительного замедления. Однако, в конце концов, вы захотите перейти от нескольких сотен миграций к нескольким, и вот тут-то и приходит на помощь сминание.

Вернуться на верх