无法删除MySQL表

时间:2011-11-18 13:06:07

标签: mysql sql foreign-keys

我需要从MySQL数据库中删除一个已弃用的空表。

表定义是noddy:

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的导出功能除了上面显示的表定义外没有显示任何内容。表中没有行,据我所知,没有FK引用Address.Id字段(但我不知道如何验证)。

有人可以告诉我如何摆脱桌子吗?

2 个答案:

答案 0 :(得分:13)

SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE Address;
SET FOREIGN_KEY_CHECKS = 1;

答案 1 :(得分:8)

列出外键

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;

针对您的具体搜索:

select 
    constraint_name
from
    information_schema.key_column_usage
where
    referenced_table_name = 'Address' AND referenced_column_name = 'ContactId';

删除外键约束:

ALTER TABLE [table_name] DROP FOREIGN KEY [constraint_name];