Почему django migrate не работает, хотя я использовал make migration, и это не привело к ошибке
я создаю новый экземпляр модели и использую makemigrations
его работу, а это моя 0001_initial.py:
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='ProfileModel',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('avatar', models.ImageField(blank=True, default='accounts/avatars/default_avatar.jpg', upload_to='accounts/avatars/')),
('phone', phonenumber_field.modelfields.PhoneNumberField(blank=True, max_length=128, region=None)),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL)),
],
),
]
когда я использую migrate, Django не может обнаружить и применить изменения к базе данных.
Необходимые операции:
Применить все миграции: my_app
Выполняемые миграции:
Миграции не применяются.
я использую python .\manage.py migrate accounts_app 0001_initial, и это не работает
, django говорит: нет миграции для применения
и когда я использую python .\manage.py showmigrations accounts_app, рядом с именем моего файла миграции появляется крестик.
Перенос уже применен к базе данных, к которой вы подключены. Маркер (часто обозначаемый флажком [X]) означает "применен"; пустой флажок означает "не применен".
Что делать:
- Подтвердите статус, выполнив команду
python manage.py showmigrations accounts_app- Если вы видите
[X] 0001_initial, значит, изменения были применены. - Если вы видите
[ ] 0001_initial, значит, миграции были , а не применены.
- Если вы видите
- Если вы хотите запустить его повторно:
python manage.py migrate accounts_app zeropython manage.py migrate accounts_app
- Или удалите базу данных (например, db.sqlite3) и запустите
python manage.py migrate - Таким образом, вы сможете видеть изменения по мере их применения.
- Также убедитесь, что приложение находится в INSTALLED_APPS и вы подключены к той же базе данных, которую проверяете.
Например:
# Run makemigrations
python manage.py makemigrations chat_assistant
Migrations for 'chat_assistant':
chat_assistant/migrations/0002_assistantconfiguration_query_limit.py
+ Add field query_limit to assistantconfiguration
# Check migrations that have been applied
python manage.py showmigrations chat_assistant
[X] 0001_initial # This one has been applied
[ ] 0002_assistantconfiguration_query_limit # This one has not been applied
# Apply migrations that have not been applied
python manage.py migrate chat_assistant
Operations to perform:
Apply all migrations: chat_assistant
Running migrations:
Applying chat_assistant.0002_assistantconfiguration_query_limit... OK
# Check that the new migration has been applied
python manage.py showmigrations chat_assistant
chat_assistant
[X] 0001_initial
[X] 0002_assistantconfiguration_query_limit # Now this migration has been applied.