Я случайно удалил папку миграций в Django - PullRequest
1 голос
/ 04 марта 2020

Я использую Django и Postgre для БД. Итак, я закончил все миграции, но потом я случайно удалил папку миграций в моем редакторе. Поэтому я снова выполнил команду «python manage.py makemigrations» в терминале, надеясь, что смогу вернуть папку, но он ответил: «Изменения не обнаружены». Что я должен сделать, чтобы вернуть папку? Разве неправильно просто снова мигрировать? Я пытался создать новую базу данных и повторил тот же процесс, но он по-прежнему говорит: «Изменения не обнаружены».

Я очень ценю вашу помощь. :)

Ответы [ 4 ]

2 голосов
/ 04 марта 2020

Выполните следующие шаги, если хотите исправить миграции без потери базы данных.

Первая очистка истории миграции базы данных.

a. go до python оболочка python manage.py shell

b. тип from django.db.migrations.recorder import MigrationRecorder

c. введите MigrationRecorder.Migration.objects.all().delete()

Во-вторых, пересоздать миграции

Создать новую папку migrations. Создайте файл с именем __init__.py внутри папки.

Запустите команду python manage.py makemigrations.

Примените поддельную миграцию, чтобы схема базы данных и история миграции syn c.

python manage.py migrate --fake

0 голосов
/ 04 марта 2020

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

0 голосов
/ 04 марта 2020

Попробуйте выполнить следующие действия:

  1. очистить py c кэш: запустить python manage.py clear_pyc
  2. Создать новую папку миграции, если старая была удалена, и создать __init__.py файл внутри
  3. Создайте миграции еще раз, запустив python manage.py makemigrations <your-app-name>

Таким образом, вы восстановите удаленную миграцию, поскольку вы можете впоследствии перенести все, запустив python manage.py migrate

0 голосов
/ 04 марта 2020

Удалите все в папке миграций

и введите следующую команду

python manage.py makemigrations

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...