2016-02-20 3 views
0

Когда я бегу мой сценарий в моей консоли Sql# 1005 - не может создать таблицу (Errno 150)

-- ----------------------------------------------------- 
-- 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; 

В дисплее консоли следующее сообщение об ошибке:

Ошибка Consulta 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…) 

Я искал возможные ошибки:

  1. Два ключевых типа полей и/или размер не соответствуют точно.
  2. Имя внешнего ключа является дубликатом уже существующего ключа.
  3. В одном из ключевых полей, которые я пытаюсь ссылаться, нет индекса и/или не является первичным ключом.

    This possible errors are here

Спасибо за вашу помощь.

ответ

0

Ваша структура данных не имеет для меня смысла - составные первичные ключи обычно не имеют.

Но для внешнего ключа ссылки, вы должны ссылаться всех столбцов внешнего ключа, а не по одному:

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.

+0

Спасибо! эта работа – tipiwiny

Смежные вопросы