【发布时间】:2017-08-26 06:34:51
【问题描述】:
在我在 Django 中使用我的博客应用程序 (blogapp) 进行实验期间,我创建了两个模型(类别和语言),并使用以下连接将它们连接到另一个模型 (Post):
category = models.ManyToManyField(Category)
language = models.ForeignKey(Language)
然后由于缺少默认值,它给出了类似THIS 的错误。尝试使用THIS 和THIS 的混合物来回滚。然后我尝试使用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_category 和blogapp_language。服务器工作正常,但是当我尝试添加这些模型时,我不断收到"Table XXX already exists" 错误。
从 MySQL 中删除表似乎是目前唯一的选择。 当我跑步时
mysql> SHOW COLUMNS FROM blogapp_post;
我没有看到任何对语言或类别的引用,即没有名为 language_id 或 category_id 的列。我现在有两个问题:
-
手动删除表是否安全:
删除表 blogapp_language; DROP TABLE blogapp_category;
会有什么负面影响吗?
- 有没有办法像 git 这样冻结数据库,这样当我恢复到旧数据库时,django 迁移添加到数据库中的此类表会自动删除??
【问题讨论】:
标签: mysql django django-models