关于mysql:删除django使用的数据库中的表

Drop tables in database used by django

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

获取错误:外键约束失败

细节:

我有一个预先存在的(没有填充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提示错误显示:

ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

有什么方法我可以只删除上面提到的表保持我的预先存在的表完好无损?

谢谢。


两种可能性:

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

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

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

    并试试这个

    请参考这个问题stackoverflow

    禁用外键检查

    确保SET FOREIGN_KEY_CHECKS=1;


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