当前位置: 首页 > 面试题库 >

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

范峰
2023-03-14
问题内容

使用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))
    ]

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



 类似资料:
  • 有没有办法告诉flyway在不应用迁移的情况下重新创建flyway表。例如,查看迁移文件夹中的脚本,假设它们都已应用,并简单地确保flyway表包含所有脚本。 我们的方案是,我们不允许在生产和(ISO;银行、认证)原因。规则说我们需要完全删除表。因此,当我们从生产副本重置测试环境时,我们需要重新创建飞行道表。现在,我们从现有的测试环境中复制和粘贴,但有时这与生产不同步,并且会发生各种问题。 因此,

  • 我手动删除了我的所有表,现在我想不重新迁移我的表。但是它显示了这个错误 找不到基表或视图:1146表“mymedia.categories”不存在(SQL:select*from其中按asc的顺序为空) 我尝试了以下函数php artisan migrate php artisan migrate--force php artisan migrate:reset php artisan migra

  • 我正在使用flyway数据库迁移工具和一个spring boot jpa项目。当我第一次运行服务器时,flyway希望迁移SQL,但表还没有创建。在这种情况下,flyway返回一个错误,该错误类似 spring.flyway.baseline-on-migrate=true spring.flyway.enabled=true spring.flyway.clean-on-validation-e

  • 我刚刚在我的项目中启用了迁移,并在中添加了几个字段: I并创建: 产生了以下输出: 显然一切都进行得很顺利,但在收到一个错误,即column CreatedOn不存在之后,我用服务器资源管理器查看了数据库,事实上,我的表中缺少了所有4个column。我做错了什么? 我发现了我的错误。不知何故,我有两个不同的文件和具有相同的文件大小,我认为两者都是必要的。我的服务器资源管理器正在使用,数据库更改为。

  • 命令命令结果: 问题是我只有users_table,admins_table,volunteers_table,opinions_table和contact_tablelaravel迁移文件夹...他们从哪里来,从哪里迁移... 为什么会产生这个问题基本上我是在laravel应用程序中使用chatify实时聊天软件包所有以上消息收藏夹化身表都是该软件包的一部分,但我已经从laravel应用程序中删

  • 问题内容: 我正在使用Log4j作为我正在研究的项目中的日志记录框架。我有以下情况:Log4j配置为将日志写入日志文件。有时,此日志文件将复制到另一个目标并删除。日志记录框架可以正常工作,但是由于已删除日志,因此日志未写入日志文件。有什么方法可以告诉Log4j重新创建文件并继续将日志写入日志文件。 最好的问候,拉希德 问题答案: 我研究了log4j的来源,发现log4j无法创建新的日志文件,它只是