Cannot add or update a child row: a foreign key constraint fails (`analysis_da
lcyq0 2014-09-17 05:19:23 sql = "insert into tb_capacity_weight_source values(null,?,?,?)";
PreparedStatement preStmt = conn.prepareStatement(sql);
preStmt.setInt(1, i);
preStmt.setDouble(2,adjustWeight[count]);
preStmt.setInt(3, result_id);
preStmt.executeUpdate();
报错
Cannot add or update a child row: a foreign key constraint fails (`analysis_database/tb_capacity_weight_source`, CONSTRAINT `FK_REFERENCE_10` FOREIGN KEY (`INDEX_ID`) REFERENCES `tb_capacity_result_index` (`INDEX_ID`)
但是代码中要插入的记录,检查过对应的外键INDEX_ID已经存在的。
之前写的代码,插入记录中没有INDEX_ID这一项的话是可以顺利插入表中的,增加这个外键之后出现了问题。
不知道是不是与`tb_capacity_result_index` (`INDEX_ID`)多次用作外键有关? 不懂,求解决。
-- ----------------------------
-- Table structure for `tb_capacity_result`
-- ----------------------------
DROP TABLE IF EXISTS `tb_capacity_result`;
CREATE TABLE `tb_capacity_result` (
`RESULT_ID` int(11) NOT NULL auto_increment,
`CAPACITY_ID` int(11) default NULL,
`INDEX_ID` int(11) default NULL,
`RESULT` double default NULL,
PRIMARY KEY (`RESULT_ID`),
KEY `FK_REFERENCE_7` (`CAPACITY_ID`),
KEY `FK_REFERENCE_8` (`INDEX_ID`),
CONSTRAINT `FK_REFERENCE_7` FOREIGN KEY (`CAPACITY_ID`) REFERENCES `tb_capacity` (`CAPACITY_ID`),
CONSTRAINT `FK_REFERENCE_8` FOREIGN KEY (`INDEX_ID`) REFERENCES `tb_capacity_result_index` (`INDEX_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for `tb_capacity_source`
-- ----------------------------
DROP TABLE IF EXISTS `tb_capacity_source`;
CREATE TABLE `tb_capacity_source` (
`CAPACITY_SOURCE_ID` int(11) NOT NULL auto_increment,
`CAPACITY_SOURCE` double default NULL,
`CAPACITY_ID` int(11) default NULL,
`INDEX_ID` int(11) default NULL,
PRIMARY KEY (`CAPACITY_SOURCE_ID`),
KEY `FK_REFERENCE_11` (`INDEX_ID`),
KEY `FK_REFERENCE_2` (`CAPACITY_ID`),
CONSTRAINT `FK_REFERENCE_11` FOREIGN KEY (`INDEX_ID`) REFERENCES `tb_capacity_result_index` (`INDEX_ID`),
CONSTRAINT `FK_REFERENCE_2` FOREIGN KEY (`CAPACITY_ID`) REFERENCES `tb_capacity` (`CAPACITY_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=120 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tb_capacity_source
-- ----------------------------
-- ----------------------------
-- Table structure for `tb_capacity_weight_source`
-- ----------------------------
DROP TABLE IF EXISTS `tb_capacity_weight_source`;
CREATE TABLE `tb_capacity_weight_source` (
`CAPACITY_WEIGHT_SOURCE_ID` int(11) NOT NULL auto_increment,
`CAPACITY_ID` int(11) default NULL,
`INDEX_ID` int(11) default NULL,
`CAPACITY_WEIGHT_SOURCE` double default NULL,
PRIMARY KEY (`CAPACITY_WEIGHT_SOURCE_ID`),
KEY `FK_REFERENCE_1` (`CAPACITY_ID`),
KEY `FK_REFERENCE_10` (`INDEX_ID`),
CONSTRAINT `FK_REFERENCE_1` FOREIGN KEY (`CAPACITY_ID`) REFERENCES `tb_capacity` (`CAPACITY_ID`),
CONSTRAINT `FK_REFERENCE_10` FOREIGN KEY (`INDEX_ID`) REFERENCES `tb_capacity_result_index` (`INDEX_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=261 DEFAULT CHARSET=utf8;