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

cant add or update child row, foreign key fails

这是我的 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', 1, 'marko123', 1),
(3, 'Jovan', 'Jovanovic', 'jovan@gmail.com', 1, '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)

我找到了一些解决方案,但它们都与我的有所不同。如何解决这个问题?当我尝试填写每个 table 除了 autorities

时出现错误

因为系统中还没有 student_details,所以使用 NULL 代替数字,稍后添加数字

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

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