mysql:外键不起作用?存在不应该存在的记录

mysql:外键不起作用?存在不应该存在的记录,mysql,Mysql,mysql8.0.16,innodb 我有两个表,定义如下: CREATE TABLE `t1` ( `t1_id` int(11) NOT NULL AUTO_INCREMENT, `t2_id` int(11) DEFAULT NULL, PRIMARY KEY (`t1_id`), KEY `FKi35qhb7o9h73w2et7geh4xwvt` (`t2_id`), CONSTRAINT `FKi35qhb7o9h73w2et7geh4xwvt` FOREIGN K

mysql8.0.16,innodb

我有两个表,定义如下:

CREATE TABLE `t1` (
  `t1_id` int(11) NOT NULL AUTO_INCREMENT,
  `t2_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`t1_id`),
  KEY `FKi35qhb7o9h73w2et7geh4xwvt` (`t2_id`),
  CONSTRAINT `FKi35qhb7o9h73w2et7geh4xwvt` FOREIGN KEY (`t2_id`) REFERENCES `t2` (`t2_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `t2` (
  `t2_id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`t2_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
mysql> select t1_id, t2_id from t1 where t2_id=11624;
+----------+-----------+
| t1_id | t2_id |
+----------+-----------+
|     6 | 11624 |

mysql> select t2_id from t2 where t2_id=11624;
Empty set (0.00 sec)
我无意中发现:表t1中有一些记录,t2_id的值没有记录在表t2中。如下所示:

CREATE TABLE `t1` (
  `t1_id` int(11) NOT NULL AUTO_INCREMENT,
  `t2_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`t1_id`),
  KEY `FKi35qhb7o9h73w2et7geh4xwvt` (`t2_id`),
  CONSTRAINT `FKi35qhb7o9h73w2et7geh4xwvt` FOREIGN KEY (`t2_id`) REFERENCES `t2` (`t2_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `t2` (
  `t2_id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`t2_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
mysql> select t1_id, t2_id from t1 where t2_id=11624;
+----------+-----------+
| t1_id | t2_id |
+----------+-----------+
|     6 | 11624 |

mysql> select t2_id from t2 where t2_id=11624;
Empty set (0.00 sec)
外键不起作用?因此,我尝试插入一条新记录:

mysql> select * from t2 where t2_id=12000;
Empty set (0.00 sec)

mysql> insert into t1(t2_id) value(12000);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`t1`, CONSTRAINT `FKi35qhb7o9h73w2et7geh4xwvt` FOREIGN KEY (`t2_id`) REFERENCES `t2` (`t2_id`))
发生了什么事?为什么表t1中有这样的记录(611624)? 我不知道


请帮帮我,谢谢

您是否在MySQL中停用过一次
外键检查
?非常感谢!你解决了我的问题@尤尔根d