使用Django 1.7迁移。
我不小心在数据库中删除了一个表。我假设再次运行迁移将重新创建表,但是没有,Django声明“不应用任何迁移”。
如何让Django重新创建表?
我跑了:
> makemigrations - No changes detected > migrate - No migrations to apply.
我尝试过更改模型并运行新的迁移,它只是指出“表’x.test_customer’不存在”是正确的,但是我希望它可以重新创建表。
迁移检查模型中的差异,然后将其转换为操作,然后转换为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)) ]
您可能可以查看第一个迁移文件(首先是制作模型的文件),然后复制并粘贴几乎所有文件。然后,您要做的就是像往常一样运行迁移