错误信息:
insert into student (id,name,age,tid) VALUES ( 1,'张三',18,1)
> 1452 - Cannot add or update a child row: a foreign key constraint fails (`db123`.`student`, CONSTRAINT `tid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`))
> 时间: 0.12s
表结构:
student
表
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`tid` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `tid` (`tid`),
CONSTRAINT `tid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
teacher
表
CREATE TABLE `teacher` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
student
表中的tid
是teacher
表中id
的外键
再次看下错误信息:
insert into student (id,name,age,tid) VALUES ( 1,'张三',18,1)
> 1452 - Cannot add or update a child row: a foreign key constraint fails (`db123`.`student`, CONSTRAINT `tid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`))
> 时间: 0.12s
翻译下来:不能添加或修改子行,外键约束失败
报错原因:
说白了就是:主表teacher
中没有id
为1
的数据,所以子表student
中就不能添加或修改tid
为1
的数据。
解决方案:
主表teacher
中添加id
为1
的数据,即可。
insert into teacher (id,name,age) VALUES(1,'李老师',30)
再次执行insert into student (id,name,age,tid) VALUES ( 1,'张三',18,1)
问题解决。