Консолидация миграции Django South

На начальных этапах моего проекта я делаю много изменений в моделях, и, таким образом, у меня появилось много южных миграций, создаваемых для моих приложений. Можно ли каким-либо образом консолидировать их перед тем, как перейти на мой производственный сервер для выполнения миграций, чтобы у меня не было миллиона миграций для каждого приложения? И если да, как бы я это сделал?

6
nl ja de

2 ответы

Вы всегда можете удалить существующие миграции и создать новую «начальную» миграцию .

Для этого вам необходимо:

  1. Remove the migration files for you app (remove the folder altogether)
  2. Run ./manage.py convert_to_south myapp

Это оставит вас с одной миграцией, соответствующей текущему состоянию вашего приложения.


Кроме того, вы всегда можете упаковать свои последние миграции вместе:

  1. Remove the migration files that you want to merge (only if they are the latest onces)
  2. Run ./manage.py schemamigration myapp

Это создаст новую миграцию, которая будет соответствовать удаленным миграциям.


Оба они, скорее всего, испортит вашу БД разработки.

5
добавлено
@hkothari Вот что я бы сделал, да!
добавлено автор Thomas Orozco, источник
нужно manage.py migrate zero --fake , чтобы очистить ваш юг db тоже (до convert_to_south или manage.py schemamigration --initial ). - delete-ghost-migrations выборочно удаляет все миграции, которые вы удалили из каталога миграций
добавлено автор hobs, источник
поэтому нижняя строка: нет, скорее всего, лучше просто позволить миграции жить самостоятельно?
добавлено автор hkothari, источник

Поскольку это среда разработки, так я это делаю (используя SQLite, см. Ниже для других SQL-серверов):

  1. Do all the changes, let the migration files pile up. No committing migration files to VCS
  2. When done, delete all the new migration files
  3. Rename database
  4. Run manage.py migrate. This will create database structure as it was before you made any changes to it.
  5. Run manage.py makemigrations. This will create the necessary migrations that reflect your current state
  6. Move back the original database which already has the final structure & data
  7. Commit migrations files

При использовании «правильных» SQL-серверов просто держите две базы данных: производство и разработка. Измените параметры проекта, чтобы указать на производственную базу данных вместо переименования на шаге 3. Также вы можете пропустить шаг 4.

1
добавлено
Django
Django
1 931 участник(ов)

Полезная информация и правила: https://github.com/django-ru/faq Вакансии и резюме: @django_jobs Пофлудить идём сюда: @django_flood Статистика чата: combot.org/chat/-1001063854692

django_jobs
django_jobs
916 участник(ов)

Поиск и предложения работы (Django) Правила: https://t.me/django_jobs/4 Вакансии с тегом #job улетают в канал @django_jobs_board Вопросы к @amureki Основной чат @pydjango

Django
Django
733 участник(ов)

Веб-фреймворк для перфекционистов с дедлайнами. Наша группа на vk: https://vk.com/django_framework В Discord: https://discord.me/django_framework по всем вопросам @MechanisM

dbGeeks
dbGeeks
545 участник(ов)

Чат про базы данных, их устройство и приемы работы с ними. Разрешаются любые адеватные дискуссии в рамках тематики чата.

Разработка СУБД
Разработка СУБД
143 участник(ов)

django flood
django flood
71 участник(ов)

Флудилка джангистов Пока без правил