这是我正在尝试运行的查询,并从其他表中引入数据 .
insert into vehicleNormal (vehicleId, makeId, modelId, Year, cylinders, driveId, mpgHighway, mpgCity, fuelTypeId)
(select vehicleId, makeId, modelId, Year, cylinders, driveId, mpgHighway, mpgCity, fuelTypeId
from vehicle
join vehicleMake on vehicleMake.vehicleMake = vehicle.make
join vehicleModel on vehiclemodel.vehicleModel = vehicle.model
join vehicleDrive on vehicleDrive.vehicleDrive = vehicle.drive
join vehicleFuelType on vehicleFuelType.vehicleFuelType = vehicle.fuelType);
这是我正在运行它的表 .
CREATE TABLE `vehicleNormal` (
`vehicleId` int(11) unsigned NOT NULL,
`makeId` int(11) DEFAULT NULL,
`modelId` int(11) DEFAULT NULL,
`Year` int(11) DEFAULT NULL,
`cylinders` int(11) DEFAULT NULL,
`driveId` int(11) DEFAULT NULL,
`mpgHighway` decimal(11,0) DEFAULT NULL,
`mpgCity` decimal(11,0) DEFAULT NULL,
`fuelTypeId` int(11) DEFAULT NULL,
PRIMARY KEY (`vehicleId`),
CONSTRAINT `vehiclenormal_ibfk_1` FOREIGN KEY (`vehicleId`) REFERENCES `vehicleMake` (`makeId`),
CONSTRAINT `vehiclenormal_ibfk_2` FOREIGN KEY (`vehicleId`) REFERENCES `vehicleModel` (`modelId`),
CONSTRAINT `vehiclenormal_ibfk_3` FOREIGN KEY (`vehicleId`) REFERENCES `vehicleDrive` (`driveId`),
CONSTRAINT `vehiclenormal_ibfk_4` FOREIGN KEY (`vehicleId`) REFERENCES `vehicleFuelType` (`fuelTypeId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是我加入的5个表中的一个 .
CREATE TABLE `vehicleMake` (
`makeId` int(11) unsigned NOT NULL AUTO_INCREMENT,
`vehicleMake` varchar(50) DEFAULT NULL,
PRIMARY KEY (`makeId`),
UNIQUE KEY `vehicleMake` (`vehicleMake`)
) ENGINE=InnoDB AUTO_INCREMENT=191 DEFAULT CHARSET=utf8;
除表名外,其他表完全相同 . 它们每个都有2列(不包括 example_1812.Vehicle
)我不能为我的生活弄清楚为什么我试图运行的查询返回错误:
无法添加或更新子行:外键约束失败(example_1812.vehiclenormal,CONSTRAINT vehiclenormal_ibfk_1 FOREIGN KEY(vehicleId)REFERENCES vehicleMake(makeId))
我期待table vehicleNormal从其他5个表中提取数据,其中4个是查找表 .
1 回答
您're getting this error because you'尝试根据当前存储在
table1
中的值,将行添加/更新为table2
,该行没有UserID字段的有效值 . 如果您发布更多代码,我可以帮助您诊断具体原因 .