当前位置: 首页 > 面试题库 >

假外键约束失败

徐友樵
2023-03-14
问题内容

我收到此错误消息:

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


问题答案:

两种可能性:

  1. 在另一个架构(mysql术语中的“数据库”)中有一个表,该表具有FK参考
  2. innodb内部数据字典与mysql字典不同步。

通过在删除失败后执行“ SHOW ENGINE INNODB STATUS”,可以查看它是哪个表(无论如何是其中之一)。

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

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



 类似资料:
  • 嗨,我知道有人问过这个问题,但我还没有找到正确的答案,为什么当我尝试做我的第二个插入: 我得到了错误: 错误1452(23000):无法添加或更新子行:外键约束失败(.,约束外键()引用()) 下面的DDL代码:

  • mysql 5.7 外键约束 主表:部门表 从表:员工表 添加外键:从表 dep_id 关联 主表 id >[danger] CASCADE > 级联更新 主表数据更新从表会更新外键 级联删除 主表数据删除,从表会一起删除

  • 我正在做一个基本的例子来测试级联删除操作,但我得到了异常。这是我的实体

  • 问题内容: 刚在Mac OS X 10.6上安装了MySQL 5.5,并且在许多表上都有一个奇怪的问题。下面是一个例子。插入行失败,但不应插入外键约束。它引用的外键确实存在。有任何想法吗? 更新 :多次删除并重新创建数据库后,我在上述插入失败后进行了操作,并得到了令人惊讶的结果。找不到父语言表!这似乎很奇怪…有什么想法吗? 更新2 :事实证明,这只是MySQL中的一个 巨大 错误。显然,最新版本的

  • 主要内容:在创建表时设置外键约束,在修改表时添加外键约束,删除外键约束MySQL外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。 外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。比如,一个水果摊,只有苹果、桃子、李子、西瓜等 4 种水果,那么,你来到水果摊要买水果就只能选择苹果、桃子、李子和西

  • 注意 当前章节中涉及的配置一般适用于关系数据库。这里展示的扩展方法在你安装了关系数据库提供程序之后就能获得(由Microsoft.EntityFrmeworkCore.Relational 程序包共享)。 外键约束是为模型中的关系引入的。 惯例 按照惯例,外键约束命名为 FK_<依赖实体类型名称>_<主实体类型名称>_<外键属性名称>。对于组合键,<外键属性名> 则为用下划线分隔的外键属性名。 数