Сбросить миграции в Django

Сбросить миграции в Django

  1. Сбросить всю базу данных в Django
  2. Вернуть приложение Django к его старым миграциям

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

В Django, если мы попадаем в такую ​​ситуацию, мы должны сбросить миграции и базу данных. При сбросе миграций у нас есть несколько вариантов в списке.

  1. Сбросить всю базу данных
  2. Вернуть приложение Django к некоторым старым миграциям.

Сбросить всю базу данных в Django

Когда нам нужно сбросить всю базу данных в Django, в списке есть несколько вариантов.

  1. Если мы используем базу данных SQLite по умолчанию в Django, мы можем удалить файл базы данных db.sqlite3, а затем удалить все папки migrations во всех приложениях. После удаления папок migrations мы можем переделать миграции и перенести их с помощью двух команд; а именно python manage.py makemigrations и python manage.py migrate.
  2. Если мы используем какую-либо другую реляционную базу данных, такую ​​как PostgreSQL или MySQL, мы можем либо удалить все таблицы с помощью инструмента управления базой данных, такого как pgAdmin, DBeaver и т. Д., Либо вручную, используя командную строку. Или мы можем создать совершенно новую базу данных, а затем подключить ее к нашему проекту Django. Обратите внимание, что в обоих случаях нужно сначала удалить все папки migrations, а затем заново выполнить миграции и, наконец, перенести их.
  3. Другой вариант - использовать команду Django manage.py, чтобы очистить для нас всю базу данных. Команда - python manage.py flush. Опять же, после использования этой команды мы должны удалить все папки migrations, а затем выполнить новые миграции.

Вернуть приложение Django к его старым миграциям

Если нам не нужно сбрасывать всю базу данных, а откатывать миграции для определенного приложения Django, у нас есть два варианта для этого. Во-первых, мы можем отменить текущие миграции приложения Django на некоторые старые миграции. Во-вторых, мы можем сбросить все миграции для приложения Django.

Если нам нужно вернуться с какой-то последней миграции, скажем, 0014, на более старую миграцию, скажем, 0008, мы можем использовать следующие команды.

python manage.py migrate AppName 0008
            --- OR ---
python manage.py migrate AppName 0008_migration_name

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

python manage.py migrate AppName zero

Обратите внимание, что иногда миграции могут быть необратимыми. Как правило, это состояние возникает, когда в модели Django были внесены некоторые существенные изменения. Когда мы попытаемся вернуться к такой миграции, Django выдаст IrreversibleError.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

LinkedIn GitHub

Сопутствующая статья - Django Migration

  • Откат последней миграции базы данных в Django