Миграции Django для внешнего ключа не отражаются в базе данных MySQL

Это мой файл миграции с именем 0004_auto_20190218_1614.py, Я побежал makemigrations а также migration команда. Все остальные добавления и удаления столбцов успешны, но в этом случае, когда я добавил внешний ключ, изменения не были отражены в базе данных. Когда я пытаюсь вставить запись.

# Generated by Django 2.1.5 on 2019-02-18 10:44`

    from django.db import migrations, models
    import django.db.models.deletion


class Migration(migrations.Migration):

    dependencies = [
        ('projectName', '0003_auto_20190218_1604'),
    ]

    operations = [
        migrations.AlterField(
            model_name='projectdetails',
            name='userdetails',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='projectName.UserDetails'),
        ),
    ]

Я получаю это исключение

_mysql_connector.MySQLInterfaceError: Unknown column 'userdetails_id' in 'field list'

и тогда это:

During handling of the above exception, another exception occurred:
AttributeError: 'NoneType' object has no attribute 'strip'

Я новичок в Джанго. Любая помощь будет оценена.

3 ответа

От твоего DB-Models, вы можете увидеть таблицу с именем django-migrations, Здесь вы найдете все прикладные миграции. Одной из возможных причин является то, что вы вручную удалили некоторые файлы миграции, но, к сожалению, там есть ссылка django-migrations Таблица. Одним из возможных решений является удаление этих примененных миграций и безопасное выполнение python manage.py migrate команда снова.

NB. Не удаляйте какие-либо миграции, которые уже имеют физический эффект в моделях. что я хочу сказать, данные модели доступны для этого эффекта миграции. Лучше немой свой дБ, а затем сделайте это, если вы не совсем уверены в этом.

Убедитесь, что вы бежите migrate команда и проверьте вашу базу данных на наличие обновлений.

Иногда примененные изменения в модели могут не отражаться в базе данных. Самый простой способ - удалить файлы миграции из папки миграции (кроме init.py) и снова запустить python manage.py makemigrations, Или вы можете использовать south migrations для эффективного отражения ваших миграций в базе данных.

Документы для south migrations можно найти по адресу: https://south.readthedocs.io/en/latest/

Другие вопросы по тегам