首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法删除MySQL表

无法删除MySQL表
EN

Stack Overflow用户
提问于 2011-11-18 21:06:07
回答 2查看 6.8K关注 0票数 3

我需要从我的MySQL数据库中删除一个不推荐使用的空表。

表的定义是noddy:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `Address` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `ContactId` int(11) NOT NULL,
  PRIMARY KEY (`Id`),
  KEY `ContactId` (`ContactId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

这会导致

#1217 - Cannot delete or update a parent row: a foreign key constraint fails

在ContactId上有一个限制,但我已经删除了它。

PHPMyAdmin的export函数不会显示上面所示的表定义以外的任何内容。表中没有行,据我所知,没有FK引用Address.Id字段(但我不知道如何验证这一点)。

有人能告诉我怎样才能摆脱这张桌子吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-18 21:11:13

列出外键

代码语言:javascript
复制
select 
    concat(table_name, '.', column_name) as 'foreign key',  
    concat(referenced_table_name, '.', referenced_column_name) as 'references'
from
    information_schema.key_column_usage
where
    referenced_table_name is not null;

对于您的案例中的特定搜索:

代码语言:javascript
复制
select 
    constraint_name
from
    information_schema.key_column_usage
where
    referenced_table_name = 'Address' AND referenced_column_name = 'ContactId';

要删除外键约束,请执行以下操作:

代码语言:javascript
复制
ALTER TABLE [table_name] DROP FOREIGN KEY [constraint_name];
票数 8
EN

Stack Overflow用户

发布于 2011-11-18 21:07:48

代码语言:javascript
复制
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE Address;
SET FOREIGN_KEY_CHECKS = 1;
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8182871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档