删除django使用的数据库中的表

时间:2012-11-08 06:21:54

标签: mysql django django-models

问题陈述:我想删除数据库中的一些表。

获取错误:外键约束失败

详细信息:

我有一个预先存在的(没有填充django models.py)数据库。我正在使用django。我用这个数据库来创建django网站。我在django中创建一个网站时给出了它的名字和正确的设置。 models.py中没有创建模型。

执行命令后:

  

python manage.py syncdb

Django将以下表添加到该数据库中:

  

| auth_group |

     

| auth_group_permissions |

     

| auth_permission |

     

| auth_user |

     

| auth_user_groups |

     

| auth_user_user_permissions |

     

| django_content_type |

     

| django_session |

     

| django_site |

我想删除所有这些表格。

我尝试了这个查询;

  

DROP TABLE table_name;

但是mysql提示错误显示:

  

错误1217(23000):无法删除或更新父行:外键约束失败

有什么方法可以只删除上面提到的表格,保持我原有的表格完好无损吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

两种可能性:

  1. 另一个模式中有一个表(mysql术语中的“数据库”)有一个FK参考
  2. innodb内部数据字典与mysql不同步。
  3. 在丢弃失败后,您可以通过执行“SHOW ENGINE INNODB STATUS”来查看它是哪个表(无论如何)。

    如果结果是后一种情况,我会转储并恢复整个服务器。

    MySQL 5.1及更高版本将在错误消息中为您提供带有FK的表的名称。

    并试试这个

    请参阅此问题stackoverflow

    禁用外键检查

    DISABLE KEYS
    

    确保SET FOREIGN_KEY_CHECKS=1;

答案 1 :(得分:0)

您可以轻松配置django以使用MyISAM,而不是使用默认的innodb存储引擎。在后一种情况下,由于关系,它不会限制您执行各种操作。两者都有积极和消极的观点。