开发者社区> 问答> 正文

假外键约束失败?mysql

我收到此错误消息:

第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命令:-?)

展开
收起
保持可爱mmm 2020-05-17 20:52:51 953 0
1 条回答
写回答
取消 提交回答
  • 两种可能性:

    在另一个架构(mysql术语中的“数据库”)中有一个表,该表具有FK参考 innodb内部数据字典与mysql字典不同步。 通过在删除失败后执行“ SHOW ENGINE INNODB STATUS”,可以查看它是哪个表(无论如何是其中之一)。

    如果是后一种情况,我将转储并还原整个服务器(如果可以)。

    MySQL 5.1及更高版本将为您提供错误消息中带有FK的表的名称。来源:stack overflow

    2020-05-17 20:57:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像