问题陈述:我想删除数据库中的一些表。
获取错误:外键约束失败
详细信息:
我有一个预先存在的(没有填充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):无法删除或更新父行:外键约束失败
有什么方法可以只删除上面提到的表格,保持我原有的表格完好无损吗?
谢谢。
答案 0 :(得分:2)
两种可能性:
在丢弃失败后,您可以通过执行“SHOW ENGINE INNODB STATUS”来查看它是哪个表(无论如何)。
如果结果是后一种情况,我会转储并恢复整个服务器。
MySQL 5.1及更高版本将在错误消息中为您提供带有FK的表的名称。
并试试这个
请参阅此问题stackoverflow
禁用外键检查
DISABLE KEYS
确保SET FOREIGN_KEY_CHECKS=1;
答案 1 :(得分:0)
您可以轻松配置django以使用MyISAM,而不是使用默认的innodb存储引擎。在后一种情况下,由于关系,它不会限制您执行各种操作。两者都有积极和消极的观点。