无法删除MySQL表

无法删除MySQL表,mysql,sql,foreign-keys,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_INCREM

我需要从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-无法删除或更新父行:外键约束失败

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

PHPMyAdmin的导出函数不显示任何超出上述表定义的内容。表中没有行,据我所知,没有FK引用
Address.Id
字段(但我不知道如何验证)

有人能告诉我如何摆脱这个表吗?

列出外键

SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE Address;
SET FOREIGN_KEY_CHECKS = 1;
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];

您是否有另一个表引用了地址的外键?@Kokers根据问题,我不知道。这显示了“Address.ContactId-Contact.Id”的条目,这使我认为FK仍然存在。我怎样才能取消它?您的联系人表是否显示与地址的FK关系?我想说的是,这个键有两个方面,源表和子表,可能是因为某种原因,当你去掉原始表的时候,这两个表中的一个没有被删除。那么我想它确实仍然存在。修改了一下我的答案。谢谢,这给了我Enough信息来追踪它-有一个FK指向我刚创建的表中的错误索引。虽然这样做有效,但风险很大,因为系统仍然认为存在FK关系;最好解决这个问题,并且只有在您知道没有表有FK的情况下才使用它。谢谢。。。我相信这会起作用,但我对忽略这些约束持谨慎态度,因为这可能会破坏引用完整性(至少,据我所知)。因此,我宁愿在尝试大锤之前解决根本问题。