我收到此错误消息:
第40行的错误1217(23000):无法删除或更新父行:外键约束失败
...当我尝试放置桌子时:
DROP TABLE IF EXISTS area
; ...定义如下:
CREATE TABLE area
( area_id
char(3) COLLATE utf8_spanish_ci NOT NULL, nombre_area
varchar(30) COLLATE utf8_spanish_ci NOT NULL, descripcion_area
varchar(100) COLLATE utf8_spanish_ci NOT NULL, PRIMARY KEY (area_id
), UNIQUE KEY nombre_area_UNIQUE
(nombre_area
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci; 有趣的是,我已经删除了模式中具有外键的所有其他表area。实际上,除了area表外,数据库是空的。
如果数据库中没有其他对象,怎么可能会有子行?据我所知,InnoDB不允许在其他模式上使用外键,对吗?
(我什至可以运行RENAME TABLE area TO something_else命令:-?)
两种可能性:
在另一个架构(mysql术语中的“数据库”)中有一个表,该表具有FK参考 innodb内部数据字典与mysql字典不同步。 通过在删除失败后执行“ SHOW ENGINE INNODB STATUS”,可以查看它是哪个表(无论如何是其中之一)。
如果是后一种情况,我将转储并还原整个服务器(如果可以)。
MySQL 5.1及更高版本将为您提供错误消息中带有FK的表的名称。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。