无法添加或更新子行:外键约束失败 [英] Cannot add or update a child row: a foreign key constraint fails
本文介绍了无法添加或更新子行:外键约束失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这两个表的create语句,我面临的问题:
第一个表:
CREATE TABLE`hrm__companyteam`(
`id_team` int(11)NOT NULL AUTO_INCREMENT,
`id_department` int(11)NOT NULL,
`team_name` varchar(255)NOT NULL DEFAULT'',
`notes` mediumtext NOT NULL,
PRIMARY KEY(`id_team`),
KEY`id_company`(`id_department`),
CONSTRAINT`hrm__companyTeam_ibfk_1` FOREIGN KEY(`id_department`)参考`hrm__companydepartment`(`id_department`)ON DELETE CASCADE,
CONSTRAINT`hrm__companyteam_ibfk_1` FOREIGN KEY(`id_department`)参考`hrm__companydepartment` DELETE CASCADE
)ENGINE = InnoDB AUTO_INCREMENT = 3 DEFAULT CHARSET = utf8
p>
CREATE TABLE`hrm__companyjobtitle`(
`id_job_title` int(11)NOT NULL AUTO_INCREMENT,
`id_team` int(11)NOT NULL DEFAULT'0',
`job_title_name`varchar(255)NOT NULL DEFAULT'',
`notes` mediumtext NOT NULL,
PRIMARY KEY(`id_job_title`),
KEY`id_division`(`id_team`),
CONSTRAINT`hrm__companyJobTitle_ibfk_1` FOREIGN KEY(`id_team`)REFERENCES`hrm__companyteam`(`id_team`)ON DELETE CASCADE,
CONSTRAINT`hrm__companyjobtitle_ibfk_1` FOREIGN KEY(`id_team`)REFERENCES`hrm__companyteam`(`id_team`)ON DELETE CASCADE
)ENGINE = InnoDB AUTO_INCREMENT = 3 DEFAULT CHARSET = utf8
当我尝试执行以下查询:
INSERT INTO`hr_db`.`hrm__companyjobtitle`(
`id_job_title`,
`id_team`,
`job_title_name`,
`notes`
)
VALUES(
'1','1','IT',''
)
我收到此错误:
1452 - 无法添加或更新子行:a外键约束失败(
hr_db
。hrm__companyjobtitle
,CONSTRAINThrm__companyJobTitle_ibfk_1
FOREIGN KEY(id_team
)参考资料hrm__companyteam
(id_team
)ON DELETE CASCADE)
请帮助...我做错了什么。如果您需要任何进一步的详细信息,请告诉我。
解决方案我使用这些语句:
CREATE TABLE`hrm__companyteam`(
`id_team` INT(11)NOT NULL AUTO_INCREMENT,
`id_department` INT(11)NOT NULL,
`team_name` VARCHAR NOT NULL DEFAULT'',
`notes` MEDIUMTEXT NOT NULL,
PRIMARY KEY(`id_team`),
INDEX`id_company`(`id_department`)
)
COLLATE ='utf8_general_ci'
ENGINE = InnoDB
AUTO_INCREMENT = 4;
CREATE TABLE`hrm__companyjobtitle`(
`id_job_title` INT(11)NOT NULL AUTO_INCREMENT,
`id_team` INT(11)NOT NULL DEFAULT'0' ,
`job_title_name` VARCHAR(255)NOT NULL DEFAULT'',
`notes` MEDIUMTEXT NOT NULL,
PRIMARY KEY(`id_job_title`),
INDEX`id_division` `id_team`),
CONSTRAINT`hrm__companyJobTitle_ibfk_1` FOREIGN KEY(`id_team`)REFERENCES`hrm__companyteam`(`id_team`)ON DELETE CASCADE
)
COLLATE ='utf8_general_ci'
ENGINE = InnoDB
AUTO_INCREMENT = 4;
INSERT INTO hrm__companyteam(id_team,id_department,team_name,notes)VALUES(1,1,'Sales',''),(2,2,'Team no 1' ');
INSERT INTO hrm__companyjobtitle(id_job_title,id_team,job_title_name,notes)VALUES('1','1','IT','')
并且所有这些都成功运行,没有任何错误
These are the create statement for the two tables that i am facing the issue with: First Table:
CREATE TABLE `hrm__companyteam` ( `id_team` int(11) NOT NULL AUTO_INCREMENT, `id_department` int(11) NOT NULL, `team_name` varchar(255) NOT NULL DEFAULT '', `notes` mediumtext NOT NULL, PRIMARY KEY (`id_team`), KEY `id_company` (`id_department`), CONSTRAINT `hrm__companyTeam_ibfk_1` FOREIGN KEY (`id_department`) REFERENCES `hrm__companydepartment` (`id_department`) ON DELETE CASCADE, CONSTRAINT `hrm__companyteam_ibfk_1` FOREIGN KEY (`id_department`) REFERENCES `hrm__companydepartment` (`id_department`) ON DELETE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
Second Table
CREATE TABLE `hrm__companyjobtitle` ( `id_job_title` int(11) NOT NULL AUTO_INCREMENT, `id_team` int(11) NOT NULL DEFAULT '0', `job_title_name` varchar(255) NOT NULL DEFAULT '', `notes` mediumtext NOT NULL, PRIMARY KEY (`id_job_title`), KEY `id_division` (`id_team`), CONSTRAINT `hrm__companyJobTitle_ibfk_1` FOREIGN KEY (`id_team`) REFERENCES `hrm__companyteam` (`id_team`) ON DELETE CASCADE, CONSTRAINT `hrm__companyjobtitle_ibfk_1` FOREIGN KEY (`id_team`) REFERENCES `hrm__companyteam` (`id_team`) ON DELETE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
When i try to execute the following query:
INSERT INTO `hr_db`.`hrm__companyjobtitle` ( `id_job_title` , `id_team` , `job_title_name` , `notes` ) VALUES ( '1', '1', 'IT', '' )
I get this error:
1452 - Cannot add or update a child row: a foreign key constraint fails (
hr_db
.hrm__companyjobtitle
, CONSTRAINThrm__companyJobTitle_ibfk_1
FOREIGN KEY (id_team
) REFERENCEShrm__companyteam
(id_team
) ON DELETE CASCADE)Please help... What am i doing wrong. Also please let me know if you need any further details.
解决方案I used these statements :
CREATE TABLE `hrm__companyteam` ( `id_team` INT(11) NOT NULL AUTO_INCREMENT, `id_department` INT(11) NOT NULL, `team_name` VARCHAR(255) NOT NULL DEFAULT '', `notes` MEDIUMTEXT NOT NULL, PRIMARY KEY (`id_team`), INDEX `id_company` (`id_department`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=4; CREATE TABLE `hrm__companyjobtitle` ( `id_job_title` INT(11) NOT NULL AUTO_INCREMENT, `id_team` INT(11) NOT NULL DEFAULT '0', `job_title_name` VARCHAR(255) NOT NULL DEFAULT '', `notes` MEDIUMTEXT NOT NULL, PRIMARY KEY (`id_job_title`), INDEX `id_division` (`id_team`), CONSTRAINT `hrm__companyJobTitle_ibfk_1` FOREIGN KEY (`id_team`) REFERENCES `hrm__companyteam` (`id_team`) ON DELETE CASCADE ) COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=4; INSERT INTO hrm__companyteam (id_team, id_department, team_name, notes) VALUES (1, 1, 'Sales', ''), (2, 2, 'Team no 1', ''); INSERT INTO hrm__companyjobtitle (id_job_title , id_team , job_title_name , notes ) VALUES ( '1', '1', 'IT', '' );
AND ALL of them ran successfully without any error
这篇关于无法添加或更新子行:外键约束失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文