#1005 - 无法创建 table(错误号 150)
#1005 - can't create table (errno 150)
当我 运行 我的脚本在我的控制台中时 Sql
-- -----------------------------------------------------
-- Table `invictus`.`Equipo`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `invictus`.`Equipo` (
`idPartido` INT NOT NULL,
`nomEquipo` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idPartido`, `nomEquipo`),
CONSTRAINT `fkequipo_idPartido`
FOREIGN KEY (`idPartido`)
REFERENCES `invictus`.`Partido` (`idPartido`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `invictus`.`Equipo-Ganador`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `invictus`.`Equipo-Ganador` (
`idPartido` INT NOT NULL,
`equipoganador` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idPartido`, `equipoganador`),
INDEX `fkeg_equipoganador_idx` (`equipoganador` ASC),
CONSTRAINT `fkeg_idpartido`
FOREIGN KEY (`idPartido`)
REFERENCES `invictus`.`Equipo` (`idPartido`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fkeg_equipoganador`
FOREIGN KEY (`equipoganador`)
REFERENCES `invictus`.`Equipo` (`nomEquipo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
在控制台中显示以下错误:
错误
咨询 SQL:
CREATE TABLE IF NOT EXISTS `invictus`.`Equipo-Ganador` (
`idPartido` INT NOT NULL,
`equipoganador` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idPartido`, `equipoganador`),
INDEX `fkeg_equipoganador_idx` (`equipoganador` ASC),
CONSTRAINT `fkeg_idpartido`
FOREIGN KEY (`idPartido`)
REFERENCES `invictus`.`Equipo` (`idPartido`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fkeg_equipoganador`
FOREIGN KEY (`equipoganador`)
REFERENCES `invictus`.`Equipo` (`nomEquipo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
MySQL ha dicho: Documentación
#1005 - Can't create table 'invictus.Equipo-Ganador' (errno: 150) (Detalles…)
我一直在寻找可能的错误:
- 两个关键字段类型 and/or 大小不完全匹配。
- 外键名称与已存在的键重复。
我试图引用的关键字段之一没有索引and/or不是主键。
感谢您的帮助。
你的数据结构对我来说没有意义 -- 复合主键通常没有意义。
但是,对于外键引用,您需要引用外键中的所有列,而不是一次引用一个:
CREATE TABLE IF NOT EXISTS `Equipo-Ganador` (
`idPartido` INT NOT NULL,
`equipoganador` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idPartido`, `equipoganador`),
INDEX `fkeg_equipoganador_idx` (`equipoganador` ASC),
CONSTRAINT `fkeg_idpartido_equipoganador`
FOREIGN KEY (`idPartido`, equipoganador)
REFERENCES `Equipo` (`idPartido`, nomEquipo)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
这适用于 SQL Fiddle。
当我 运行 我的脚本在我的控制台中时 Sql
-- -----------------------------------------------------
-- Table `invictus`.`Equipo`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `invictus`.`Equipo` (
`idPartido` INT NOT NULL,
`nomEquipo` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idPartido`, `nomEquipo`),
CONSTRAINT `fkequipo_idPartido`
FOREIGN KEY (`idPartido`)
REFERENCES `invictus`.`Partido` (`idPartido`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `invictus`.`Equipo-Ganador`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `invictus`.`Equipo-Ganador` (
`idPartido` INT NOT NULL,
`equipoganador` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idPartido`, `equipoganador`),
INDEX `fkeg_equipoganador_idx` (`equipoganador` ASC),
CONSTRAINT `fkeg_idpartido`
FOREIGN KEY (`idPartido`)
REFERENCES `invictus`.`Equipo` (`idPartido`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fkeg_equipoganador`
FOREIGN KEY (`equipoganador`)
REFERENCES `invictus`.`Equipo` (`nomEquipo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
在控制台中显示以下错误:
错误 咨询 SQL:
CREATE TABLE IF NOT EXISTS `invictus`.`Equipo-Ganador` (
`idPartido` INT NOT NULL,
`equipoganador` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idPartido`, `equipoganador`),
INDEX `fkeg_equipoganador_idx` (`equipoganador` ASC),
CONSTRAINT `fkeg_idpartido`
FOREIGN KEY (`idPartido`)
REFERENCES `invictus`.`Equipo` (`idPartido`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fkeg_equipoganador`
FOREIGN KEY (`equipoganador`)
REFERENCES `invictus`.`Equipo` (`nomEquipo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
MySQL ha dicho: Documentación
#1005 - Can't create table 'invictus.Equipo-Ganador' (errno: 150) (Detalles…)
我一直在寻找可能的错误:
- 两个关键字段类型 and/or 大小不完全匹配。
- 外键名称与已存在的键重复。
我试图引用的关键字段之一没有索引and/or不是主键。
感谢您的帮助。
你的数据结构对我来说没有意义 -- 复合主键通常没有意义。
但是,对于外键引用,您需要引用外键中的所有列,而不是一次引用一个:
CREATE TABLE IF NOT EXISTS `Equipo-Ganador` (
`idPartido` INT NOT NULL,
`equipoganador` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idPartido`, `equipoganador`),
INDEX `fkeg_equipoganador_idx` (`equipoganador` ASC),
CONSTRAINT `fkeg_idpartido_equipoganador`
FOREIGN KEY (`idPartido`, equipoganador)
REFERENCES `Equipo` (`idPartido`, nomEquipo)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
这适用于 SQL Fiddle。