Django «миграция применяется до ее зависимости» при выполнении любых команд миграции - PullRequest
0 голосов
/ 10 марта 2020

Я использую Django 3.0.2, который подключен к локальной базе данных MySQL. В моем текущем проекте есть 2 приложения: account и home .

Я удалил все таблицы в моей базе данных после обновления некоторых полей модели и удалил все файлы в папке миграции, кроме __init__.py. Попытка запустить сервер разработки показывает ошибку: Dependency on app with no migrations: accounts, поэтому я запустил python manage.py makemigrations, который вернул это

Migrations for 'accounts':
  accounts\migrations\0001_initial.py
    - Create model User
Migrations for 'home':
  home\migrations\0001_initial.py
    - Create model Idea
    - Create model Reply

После этого при запуске сервера выдается предупреждение, говорящее

У вас есть 1 не примененная миграция (и). Ваш проект может не работать должным образом, пока вы не примените переносы для приложений: аккаунтов. Запустите «python manage.py migrate», чтобы применить их.

При этом возникает исключение InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency accounts.0001_initial on database 'default'


Запуск python manage.py showmigrations возвращает это:

accounts
 [ ] 0001_initial
admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
 [X] 0009_alter_user_last_name_max_length
 [X] 0010_alter_group_name_max_length
 [X] 0011_update_proxy_permissions
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
home
 [X] 0001_initial
sessions
 [X] 0001_initial

Я пробовал запускать команды в разных порядках, но в итоге это приводит к одному и тому же результату. При необходимости я могу предоставить более подробную информацию о приложении.

1 Ответ

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

Надеюсь, вы не очистили свой модельный класс. Вы можете удалить все файлы в каталоге migrations каталога вашего приложения, за исключением init .py файла. Вы должны удалить таблицу django_migrations. После удаления запустите

python manage.py makemigrations account
python manage.py makemigrations home
python manage.py migrate
...