Django 1.7迁移不会重新创建删除的表,为什么?

发布于 2021-01-29 15:08:59

使用Django 1.7迁移。

我不小心在数据库中删除了一个表。我假设再次运行迁移将重新创建表,但是没有,Django声明“不应用任何迁移”。

如何让Django重新创建表?

我跑了:

> makemigrations - No changes detected
> migrate - No migrations to apply.

我尝试过更改模型并运行新的迁移,它只是指出“表’x.test_customer’不存在”是正确的,但是我希望它可以重新创建表。

关注者
0
被浏览
73
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    迁移检查模型中的差异,然后将其转换为操作,然后转换为SQL。它 不会
    自动将db方案与您的模型同步,也无法知道您是否删除了表(它不了解手动更改,因为,您不应该进行手动更改。这就是重点)

    答案?手动更改也需要 手动迁移
    。您需要做的就是简单地编写自己的迁移并手动告诉South重新构建表。这不是很困难,文档使它变得非常容易。只是做这样的事情:

    from django.db import migrations, models
    
    class Migration(migrations.Migration):
    
        operations = [
            migrations.CreateModel("Foo"),
            migrations.AddField("Foo", "bar", models.IntegerField(default=0))
        ]
    

    您可能可以查看第一个迁移文件(首先是制作模型的文件),然后复制并粘贴几乎所有文件。然后,您要做的就是像往常一样运行迁移



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看