Можно ли сбросить миграцию django на приложение, развернутое на heroku? - PullRequest
0 голосов
/ 20 февраля 2019

Я развернул приложение django на heroku, но мне нужно сбросить эти миграции.Это возможно без удаления всего проекта и его повторного развертывания?У меня есть некоторые тестовые данные в этой базе данных, которые я бы предпочел не вводить заново.

Я хотел бы удалить все файлы миграции и создать новые.Дело в том, что я удалил все файлы миграции со своего локального компьютера и создал новые, поэтому теперь все файлы миграции на моем локальном компьютере имеют номер 001. Если нажать на heroku, никаких изменений не произошло, поскольку там уже существуют файлы миграции 001.Только удаление их будет работать.В основном что-то похожее на

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete

но для героку.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Толчок к Героку - это часть решения, но не все.Это обновляет миграцию файлов , но не таблицу django_migrations в вашей базе данных.

  1. Если у вас все еще работает старый код на Heroku:

    1. Резервное копирование вашей базы данных

    2. Отмена всех ваших миграций:

      heroku run python manage.py migrate appname zero
      
    3. Затем разверните новый код:

      git push heroku master
      
    4. Затем запустите новые миграции:

      heroku run python manage.py migrate
      
  2. Если вы уже развернули новый код в Heroku:

    1. Резервное копирование базы данных

    2. Вручную удалите таблицы своего приложенияиз вашей базы данных, а также строк из таблицы django_migrations, где app соответствует имени вашего приложения, например, через heroku pg:psql (это может быть сложно, если у вас установлены другие приложения и зависимости между приложениями)

    3. Запустите новые миграции:

      heroku run python migrate
      

Еще один, возможно, более безопасный вариант, если вы ужеразвернут новый код для отката до версии, которая отражает схему вашей базы данных, затем используйте вариант 1 выше.В этом случае вы можете снова выполнить откат к новой версии вместо обычного выпуска.

0 голосов
/ 20 февраля 2019

Да, это может быть сделано двумя способами.

  • Вы можете сгенерировать осветитель для вашей текущей схемы базы данных, если такой столбец не удален или не изменен .
  • Вы можете сбросить вашу базу данных , чем просто удалить базу данных с вашего сервера БД и снова выполнить миграцию!Чем загружать выгруженные данные в свежие БД, это сохранит ваши предыдущие данные в безопасности.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...