我对SQL非常陌生,我试图执行一个简单的ALTER TABLE来创建一个新列,并将其用作外键引用我的数据库中的另一个简单表格。我已经修改了两个表格为InnoDB。
然而,在执行ALTER TABLE代码时,我遇到了以下错误:
Error 1452 Cannot add or update a child row:
a foreign key constraint fails (`toys`.<result 2 when
explaining filename '#sql-6d4_6'>, CONSTRAINT
`#sql-6d4_6_ibfk_1` FOREIGN KEY (`toy_id`) REFERENCES `toys` (`toy_id`))
下面是两个表的描述:
表1:
FIELD TYPE NULL KEY EXTRA
toy_id int(11) NO PRI auto_increment
toy varchar(50) YES
表2:
FIELD TYPE NULL KEY EXTRA
boy_id int(11) NO PRI auto_increment
boy varchar(50) YES
这是我尝试执行的ALTER查询:
ALTER TABLE boys
ADD COLUMN toy_id INT NOT NULL,
ADD CONSTRAINT toys_toy_id_fk
FOREIGN KEY(toy_id)
REFERENCES toys(toy_id);
我已经四处查找试图弄清楚它,但没有成功。谢谢您的帮助,也请善待这位新手 :)
编辑:
以下是两个表的 SHOW CREATE TABLE:
表1:
CREATE TABLE `toys` (
`toy_id` int(11) NOT NULL AUTO_INCREMENT,
`toy` varchar(50) DEFAULT NULL,
PRIMARY KEY (`toy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
表格2:
CREATE TABLE `boys` (
`boy_id` int(11) NOT NULL AUTO_INCREMENT,
`boy` varchar(50) DEFAULT NULL,
PRIMARY KEY (`boy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
ADD
:... ADD CONSTRAINT toys_toy_id_fk FOREIGN KEY(toy_id) ...
- ypercubeᵀᴹSHOW CREATE TABLE toys
和SHOW CREATE TABLE boys
的输出吗? - ypercubeᵀᴹSHOW CREATE TABLE
。 - KPM