详细信息表中INSERT语句的MySql约束错误

时间:2014-06-14 06:22:31

标签: mysql sql database constraints

我的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。无法添加或更新子行:外键   约束失败(leaderboarddetalle_grupo_producto,CONSTRAINT   fk_DETALLE_GRUPO_PRODUCTO_GRUPO_PRODUCTO1外国钥匙   (GRUPO_PRODUCTO_ID)参考LEADERBOARDGRUPO_PRODUCTOID)   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

1 个答案:

答案 0 :(得分:0)

解决了将MySQL数据库版本从5.5.32升级到5.6.19的问题。升级后,问题再也没有发生过了。