Экспериментируя с некоторыми серьезными изменениями в моих моделях Django, я серьезно все испортил. К счастью, я не внес никаких изменений, поэтому я сбросил все изменения. Следующим шагом было вернуть мою базу данных в прежнее состояние. В конце концов, я дошел до того, что мог успешно без проблем запускать команды makemigrations
и migrate
. Однако всякий раз, когда я пытаюсь зайти на сайт, я получаю ProgrammingError
сообщение о том, что моя таблица topspots_notification
не существует.
У меня в папке migrations
есть следующий файл миграции:
# -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-08-25 15:52
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('topspots', '0018_siteuser_share_location'),
]
operations = [
migrations.CreateModel(
name='Notification',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('message', models.TextField()),
('recipient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='recipient_notification', to=settings.AUTH_USER_MODEL)),
('sender', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='sender_notification', to=settings.AUTH_USER_MODEL)),
],
),
]
Который должен создать эту таблицу. Если я попытаюсь запустить эту миграцию специально, она не удастся отменить последующие миграции, которые ссылаются на эту таблицу, поскольку эта таблица не существует. Я попытался удалить указанную выше миграцию (где создана моя таблица notification
) и все модели, которые идут после нее. Затем я снова запускаю makemigrations
и migrate
, но он говорит, что миграции для применения нет, и моя таблица все еще не создана.
У меня вопрос: почему моя таблица не создается при запуске миграции? Я знаю, что могу вручную создать таблицу в MySQL, но я хотел бы знать, что я сделал не так, чтобы испортить мою базу данных таким образом.
Я видел несколько сообщений SO, связанных с тем, что таблицы не создаются и миграции не применяются, но я еще не нашел ничего, что работает для меня.
- Моя таблица не является «неуправляемой».
- Я попытался удалить все свои миграции и создать новые.
- Я пробовал запускать
migrate
для всего проекта, а также выполнять миграции для конкретного приложения и даже для определенных миграций.
Я предполагаю, что в самой моей базе данных есть что-то, что говорит Django не применять миграции, но я не знаю, что искать.
Мы ценим любые предложения. Спасибо.
python manage.py showmigrations
? Помечает ли он эту миграцию как примененную? - person knbk   schedule 31.08.2016[X]
означает "применено", тогда да, все миграции отображаются как примененные. - person elethan   schedule 31.08.2016