我需要从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
字段(但我不知道如何验证)。
有人可以告诉我如何摆脱桌子吗?
答案 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];