我的MySQL 5数据库中有两个表(主/详细信息)。主表创建如下:
-- -----------------------------------------------------
-- Table `LEADERBOARD`.`GRUPO_PRODUCTO`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `GRUPO_PRODUCTO` (
`ID` INT NOT NULL AUTO_INCREMENT,
`NOMBRE` VARCHAR(45) NOT NULL,
`ESTADO` VARCHAR(2) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE INDEX `ID_UNIQUE` (`ID` ASC))
ENGINE = InnoDB;
详细信息表的创建方式如下:
-- -----------------------------------------------------
-- Table `LEADERBOARD`.`DETALLE_GRUPO_PRODUCTO`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `DETALLE_GRUPO_PRODUCTO` (
`ID` INT NOT NULL AUTO_INCREMENT,
`PRODUCTO_ID` INT NOT NULL,
`GRUPO_PRODUCTO_ID` INT NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE INDEX `ID_UNIQUE` (`ID` ASC),
INDEX `fk_DETALLE_GRUPO_PRODUCTO_GRUPO_PRODUCTO1_idx` (`GRUPO_PRODUCTO_ID` ASC),
CONSTRAINT `fk_DETALLE_GRUPO_PRODUCTO_GRUPO_PRODUCTO1`
FOREIGN KEY (`GRUPO_PRODUCTO_ID`)
REFERENCES `GRUPO_PRODUCTO` (`ID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
我在主表中已经有一些行,使用这些INSERT命令:
INSERT INTO `GRUPO_PRODUCTO` (`ID`,`NOMBRE`,`ESTADO`) VALUES (2,'Todos menos recargas','D');
INSERT INTO `GRUPO_PRODUCTO` (`ID`,`NOMBRE`,`ESTADO`) VALUES (3,'Todos menos recargas','D');
INSERT INTO `GRUPO_PRODUCTO` (`ID`,`NOMBRE`,`ESTADO`) VALUES (6,'Otros','D');
INSERT INTO `GRUPO_PRODUCTO` (`ID`,`NOMBRE`,`ESTADO`) VALUES (7,'Todos menos recargas','A');
但是当我尝试在引用主表中的行的详细信息表中插入一行时,我得到了完整性检查约束错误:
错误代码:1452。无法添加或更新子行:外键 约束失败(
leaderboard
。detalle_grupo_producto
,CONSTRAINTfk_DETALLE_GRUPO_PRODUCTO_GRUPO_PRODUCTO1
外国钥匙 (GRUPO_PRODUCTO_ID
)参考LEADERBOARD
。GRUPO_PRODUCTO
(ID
) ON DELETE NO A)
这是详细信息表中的INSERT命令(省略ID以使用自动增量):
INSERT INTO DETALLE_GRUPO_PRODUCTO (PRODUCTO_ID, GRUPO_PRODUCTO_ID) VALUES (13, 7);
有趣的是,当我尝试在SQL Fiddle中复制错误时,它没有问题(我在SQL Fiddle中尝试使用MySQL 5.5.32和MySQL 5.1.61,它可以在两者中运行):{ {3}}
您认为我的问题是什么?
Pd积。我的数据库是在Mac OSX 10.9.3上运行的MySQL版本5.5.12
答案 0 :(得分:0)
解决了将MySQL数据库版本从5.5.32升级到5.6.19的问题。升级后,问题再也没有发生过了。