错误1452(23000):无法添加或更新子行:外键约束失败

当我执行以下SQL命令时:

INSERT INTO test_usershosts (RID,userid,hid,Usr,Pass) 

VALUES (NULL,1,1,"user","pass");

我收到以下错误消息:

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f

ails (`dm`.`test_usershosts`, CONSTRAINT `test_usershosts_ibfk_1` FOREIGN KEY (`

userid`) REFERENCES `test_users` (`userid`) ON DELETE CASCADE ON UPDATE CASCADE)

我的桌子:

CREATE TABLE IF NOT EXISTS `test_users` (

`userid` int(11) NOT NULL AUTO_INCREMENT,

`username` varchar(10) NOT NULL DEFAULT '',

`password` varchar(50) NOT NULL DEFAULT '',

PRIMARY KEY (userid)

) ENGINE=InnoDB;

INSERT INTO `test_users` (`userid`, `username`, `password) VALUES

(1120, 'guest', '12250170a9624f336ca24');

CREATE TABLE IF NOT EXISTS `test_hosts` (

`hid` int(11) NOT NULL AUTO_INCREMENT,

`UID` int(11) NOT NULL,

`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

PRIMARY KEY (hid)

) ENGINE=InnoDB;

INSERT INTO `test_hosts` (`hid`, `UID`, `name`) VALUES (30, 10, 'MU');

CREATE TABLE IF NOT EXISTS `test_usershosts` (

`RID` int(11) NULL AUTO_INCREMENT,

`userid` int(11) ,

`hid` int(11) ,

`Usr` varchar(100) ,

`Pass` varchar(100) ,

PRIMARY KEY (RID),

INDEX (userid),

INDEX (hid),

FOREIGN KEY (userid) REFERENCES test_users (userid)

ON DELETE CASCADE ON UPDATE CASCADE,

FOREIGN KEY (hid) REFERENCES test_hosts (hid)

ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE=InnoDB;

我研究了许多类似的案例,但找不到任何解决方案。任何帮助,将不胜感激。

回答:

为什么您获得的是异常的原因是因为你将在表中的记录test_usershosts,其中的价值userID是不存在的表test_users。与相同的值hid也未显示在表上test_hosts

表格test_usershosts取决于表格:test_users

test_hosts。所以,要确保在表中插入记录时test_usershosts,该值hiduserid存在于父表已经:test_users

test_hosts

尝试执行此查询,并确定将其插入。

INSERT INTO test_usershosts (RID,userid,hid,Usr,Pass) 

VALUES (NULL,1120,30,'user','pass');

  • SQLFiddle演示

AUTO_INCREMENT在表格上看到该选项:test_users

test_hosts,因为在两个表格上执行的每个查询都提供了值,所以不需要。

以上是 错误1452(23000):无法添加或更新子行:外键约束失败 的全部内容, 来源链接: utcz.com/qa/403343.html

回到顶部