Django外键迁移不反映在MySQL数据库中

时间:2019-02-19 06:02:53

标签: django django-models django-rest-framework django-migrations django-mysql

这是我的迁移文件,名为0004_auto_20190218_1614.py。我运行了makemigrationsmigration命令。列的所有其他添加和删除操作都是成功的,但是在这种情况下,如果我添加了外键,则更改未反映在数据库中。当我尝试插入记录时。

# 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 :(得分:0)

在您的DB-Models中,您可以看到名为django-migrations的表。在这里,您将找到所有已应用的迁移。可能的原因之一是您手动删除了一些迁移文件,但不幸的是该引用保留在django-migrations表中。一种可能的解决方案是删除那些应用的迁移,然后再次安全运行python manage.py migrate命令。

N.B:请勿删除已经对模型产生物理影响的任何迁移。我想说的是,模型数据可用于这些迁移效果。最好使您的dB哑,然后,如果您对此不太确定,请执行此操作。

答案 1 :(得分:0)

确保您运行migrate命令并检查数据库中的更新。

答案 2 :(得分:-1)

有时应用的模型更改可能不会反映在数据库中。最简单的方法是删除迁移文件夹( init .py除外)中的迁移文件,然后再次运行python manage.py makemigrations。 或者,您可以使用south migrations来有效地反映您在数据库中的迁移。

south migrations的文档可在以下位置找到: https://south.readthedocs.io/en/latest/