微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法添加或更新子行,外键失败

如何解决无法添加或更新子行,外键失败

这是我的sql文件

    DROP DATABASE  IF EXISTS `dbstudents`;

CREATE DATABASE  IF NOT EXISTS `dbstudents`;
USE `dbstudents`;

DROP TABLE IF EXISTS `student_detail`;

CREATE TABLE `student_detail` (
  `id` int(11) NOT NULL AUTO_INCREMENT,`fav_programming_language` varchar(128) DEFAULT NULL,`city` varchar(45) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;


DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
   `id` int(11) NOT NULL AUTO_INCREMENT,`first_name` varchar(45) DEFAULT NULL,`last_name` varchar(45) DEFAULT NULL,`email` varchar(45) DEFAULT NULL,`student_detail_id` int(11) DEFAULT NULL,`password` varchar(50) NOT NULL,`enabled` tinyint(1) NOT NULL,PRIMARY KEY (`id`),KEY `FK_DETAIL_idx` (`student_detail_id`),CONSTRAINT `FK_DETAIL` FOREIGN KEY (`student_detail_id`) REFERENCES `student_detail` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;



DROP TABLE IF EXISTS `authorities`;
CREATE TABLE `authorities` (
  `id` int(11) NOT NULL AUTO_INCREMENT,`authority` varchar(50) NOT NULL,UNIQUE KEY `authorities_idx_1` (`id`,`authority`),CONSTRAINT `authorities_ibfk_1` FOREIGN KEY (`id`) REFERENCES `student` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

这是插入语句:

    INSERT INTO `student` 
VALUES 
(1,'Stefan','Stefanovic','stefan@gmail.com',1,'stefan123',1),(2,'Marko','Markovic','marko@gmail.com','marko123',(3,'Jovan','Jovanovic','jovan@gmail.com','jovan123',1);

这是错误

 Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`dbstudents`.`student`,CONSTRAINT `FK_DETAIL` FOREIGN KEY (`student_detail_id`) REFERENCES `student_detail` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)

我找到了一些解决方案,但所有解决方案都与我的有所不同。如何解决这个问题?当我尝试填写除自治权外的每个表时发生错误

解决方法

由于系统中没有任何 student_details,请使用 NULL 代替数字并稍后添加该数字

    INSERT INTO `student` 
VALUES 
(1,'Stefan','Stefanovic','stefan@gmail.com',NULL,'stefan123',1),(2,'Marko','Markovic','marko@gmail.com','marko123',(3,'Jovan','Jovanovic','jovan@gmail.com','jovan123',1);

参见示例 https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=c1bbdd8ee9b9a9af244da774cdb41175

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。