Миграции Django для внешнего ключа не отражаются в базе данных MySQL - PullRequest
0 голосов
/ 19 февраля 2019

Это мой файл миграции с именем 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'

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

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

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

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

0 голосов
/ 22 февраля 2019

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

0 голосов
/ 19 февраля 2019

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

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

...