Задать вопрос
dancha
@dancha
Обожаю python

Повторная initial миграция с существующей бд?

Пред.история:
Добавил я как то модель в своё app.
Мигрировал на тестовый сервер(но почему то не проверял)
Потом сделал миграцию на основной сервер, там все прекрасно работало.
Прошло время, мне пришлось вернуться к этой модели на тестовый сервер.
Я удивился, когда обнаружил, что данной модели нет в бд.

Мои действия:
Не долго думая, я решил, что сбросить миграции будет хорошим способом.
Я удалил все файлы из app-migrations
Я удалил все строки из бд django_migrations
По новой запустил makemigrations
Затем migrate, на что был ответ:
django.db.utils.ProgrammingError: relation "тут_типа_модель_которыя_уже_есть_в_бд" already exists
Прогуглил, сказано сделать "ФакАп":
migrate --fake app
Я сделал (Applying app.0001_initial... FAKED)
, не сработало.
Еще были советы сделать syncdb, но это тоже чего то совсем не работает.
migrate app 0001 тоже не то.

До этого, когда бд была почти пуста, я спокойно удалял миграции и чистил бд, затем снова делал миграции и все было норм.
Сейчас у меня очень большой объем бд, и все делать заново не очень охото (даже просто экспортировать, а потом импортировать).

Вопрос:
Как сделать изначальную миграцию (0001_initial), для уже существующей бд, после удаления всех миграций и сделав makemigrations как будто впервые.
  • Вопрос задан
  • 810 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
JRazor
@JRazor
Senior StarkOverFlow Programmer
Чтобы откатить все миграции в приложении, надо сделать так:
migrate app_name zero

Потом применить их снова:
migrate app_name

Если миграции менялись, но не откатывались заранее - могут возникнуть проблемы: придется удалять таблицу вручную и применять все миграции к приложению заново. А если и initial файл изменился, то и на двух серверах тоже.

А migrate --fake app_name - это просто запись в django_migrations, не больше

И да, не надо каждый раз пересоздавать миграции - сам себе проблем только наживешь: там одни миграции, там другие, там откатывал, там не откатывал.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Strikt Москва
от 100 000 до 180 000 ₽
ITK academy Саратов
от 75 000 ₽
Sim-Ba Pay Санкт-Петербург
от 180 000 ₽