【问题标题】:Deleting a table from MySQL database in Django manually手动从 Django 中的 MySQL 数据库中删除表
【发布时间】:2017-08-26 06:34:51
【问题描述】:

在我在 Django 中使用我的博客应用程序 (blogapp) 进行实验期间,我创建了两个模型(类别和语言),并使用以下连接将它们连接到另一个模型 (Post):

category = models.ManyToManyField(Category)
language = models.ForeignKey(Language)

然后由于缺少默认值,它给出了类似THIS 的错误。尝试使用THISTHIS 的混合物来回滚。然后我尝试使用THIS 添加默认值。我有一个错误"django.db.utils.OperationalError 1050, Table XXX already exists",然后我尝试了THIS。尝试通过手动从迁移文件夹中删除创建的迁移来恢复迁移。在某些时候,我得到了 django (1054, "Unknown column in 'field list") 错误。

最后我决定回到我原来的起点。当我使用python manage.py dbshell 连接到我的 MySQL 数据库时,我意识到我的 MySQL 服务器仍然有两个应该删除的表,blogapp_categoryblogapp_language。服务器工作正常,但是当我尝试添加这些模型时,我不断收到"Table XXX already exists" 错误。

从 MySQL 中删除表似乎是目前唯一的选择。 当我跑步时

mysql> SHOW COLUMNS FROM blogapp_post;

我没有看到任何对语言或类别的引用,即没有名为 language_idcategory_id 的列。我现在有两个问题:

  1. 手动删除表是否安全:

    删除表 blogapp_language; DROP TABLE blogapp_category;

会有什么负面影响吗?

  1. 有没有办法像 git 这样冻结数据库,这样当我恢复到旧数据库时,django 迁移添加到数据库中的此类表会自动删除??

【问题讨论】:

    标签: mysql django django-models


    【解决方案1】:
    1. 从表django_migrations中删除相应的条目。
    2. 从您的应用中删除迁移文件夹。
    3. 删除应用程序创建的表。

    现在进行 makemigrations 和迁移。

    您可以使用 git 恢复,但会有错误和数据更正要求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多