Django-safedelete 1.3.0 - Невозможно выполнить миграцию
Я создал внутреннее приложение, которое использовало django-safedelete. Оно прекрасно работало в течение нескольких месяцев, пока я недавно не обновил свой дистрибутив и не попытался добавить поле в модель. Я также обновил свои модули python, все обновлено, и никаких ошибок во время обновления.
Теперь я больше не могу мигрировать:
если я "makemigrations" я получаю сообщение об ошибке "django.db.utils.OperationalError: (1054, "Unknown column 'gestion_ltqmappsetting.deleted_by_cascade' in 'field list'")"
.если я добавляю булево поле "deleted_by_cascade" в таблицу ltqmappsetting, то "makemigration" работает, но "migrate" не работает с "MySQLdb.OperationalError: (1060, "Duplicate column name 'deleted_by_cascade'")"
.
Я попробовал удалить поле после makemigrations, но миграция не удается с первым сообщением об ошибке. Я также попробовал удалить операции "migration" в файле 0087...migration.py, но это не оказывает никакого влияния.
Существует ли способ обновления файла миграции между командами makemigrations и migrate?
Большое спасибо за любую помощь в этом вопросе. jm
Удивительно, как я могу часами искать ответы на вопросы, потом писать на этом сайте, и через несколько минут я действительно нахожу ответ...
В любом случае. Похоже, что я ошибся в значении второго сообщения об ошибке. Она возникла потому, что предыдущая миграция уже создала поле deleted_by_cascade в другой таблице, а не в таблице appsetting.
Итак, шаги для решения моей проблемы следующие:
- migrate migrate 0086 для удаления последних миграций .
- убедитесь, что в БД есть только столбец deleted_by_cascade в таблице appsetting .
- makemigrations - создает миграцию 0087 для добавления столбца deleted_by_cascade во все таблицы .
- отредактируйте миграцию 0087, чтобы не создавать новый столбец в таблице appsetting .
- запустите makemigrations еще раз - - это создает миграцию 0088 для добавления столбца deleted_by_cascade в таблице appsetting .
- migrate 0087
- migrate --fake 0088
Et voila ...
Возможно, что-то было не так в обновлении safe_delete.
Надеюсь, это может помочь другим.
jm