无法添加或更新子行:外键约束失败 [英] Cannot add or update a child row: a foreign key constraint fails

查看:1522
本文介绍了无法添加或更新子行:外键约束失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这两个表的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 ,CONSTRAINT hrm__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, CONSTRAINT hrm__companyJobTitle_ibfk_1 FOREIGN KEY (id_team) REFERENCES hrm__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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆