Python Django видит старые миграции, но все было удалено

Я очистил все свои базы данных, даже создал новую с другим именем, удалил все миграции и папки миграций в каждом приложении моего проекта django, очистил все образы, контейнеры, тома и сборки в моем Docker. Но когда я запускаю
python manage.py showmigrations

он показывает мне мои старые миграции, но я понятия не имею, где он их находит, потому что я удалил все, что мог.
и когда я запускаю
python manage.py makemigrations
он возвращает мне сообщение «Изменения не обнаружены»

Я даже изменил имя базы данных на новое.

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

удалите все файлы миграции (кроме init.py)

затем очистите кэш (выполните эту команду в терминале, где находится ваш проект django)

find . -path "*/__pycache__/*" -delete

Откажитесь от базы данных и пересоздайте ее, если это необходимо

Перезагрузка среды Docker

тогда сделайте миграцию

python manage.py makemigrations
python manage.py migrate

Django сохраняет таблицу в базе данных вместе с миграциями, вы можете удалить эту таблицу, но предварительно изучите ее, чтобы быть уверенным в том, что вы делаете.

Django использует таблицу базы данных django_migrations для хранения информации о миграциях. Если python manage.py showmigrations все еще показывает миграции после того, как вы удалили базу данных, вы можете проверить следующее:

  1. Возможно, вы сбросили другую базу данных
  2. Возможно, таблица django_migrations находится в другой базе данных (дублированные базы данных или другие странные вещи)
  3. Какая-то проблема с кэшированием, как уже говорилось, удалите *.pyc __pycache__ файлы

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

python manage.py migrate --fake <app_name> zero

Django хранит историю миграций в таблице djnago_migrations в DB, поэтому вы видите эту ошибку

Сначала удалите все миграции, для этого можно использовать следующую команду

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

Затем удалите django и снова установите его. После этого откройте оболочку python db и удалите таблицу migrations из DB, затем создайте новую свежую migrations, а затем migrate

python manage.py dbshell

DROP TABLE django_migrations;

python3 manage.py makemigrations

python3 manage.py migrate

Это самый эффективный способ, который я нашел, чтобы избавиться от этой ошибки. Примечание Просто будьте осторожны, делая это, сначала сделайте резервную копию вашей БД, прежде чем делать это

Вернуться на верх