2009-09-27 3 views
0

У меня есть эта схема:Почему нельзя добавить этот внешний ключ?

CREATE TABLE `lotto`.`combinaciones` (
    `indice` mediumint(8) unsigned NOT NULL, 
    `binario` int(10) unsigned NOT NULL, 
    PRIMARY KEY USING BTREE (`indice`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

CREATE TABLE `lotto`.`sorteo` (
    `numeroSorteo` int(11) NOT NULL, 
    `fechaSorteo` date NOT NULL, 
    `precioCarton` double NOT NULL, 
    `valorSerial` double NOT NULL, 
    `valorMiniserial` double NOT NULL, 
    `estatusSorteo` int(11) NOT NULL, 
    `cantidadCartones` int(11) NOT NULL, 
    PRIMARY KEY (`numeroSorteo`), 
    UNIQUE KEY `fechaSorteo` (`fechaSorteo`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

CREATE TABLE `lotto`.`cartones` (
    `numeroSorteo` int(11) NOT NULL, 
    `serial` mediumint(9) NOT NULL, 
    `indice` mediumint(8) NOT NULL, 
    `binario` int(11) NOT NULL, 
    `miniserial` smallint(6) NOT NULL, 
    `estatus` tinyint(4) NOT NULL default '0', 
    PRIMARY KEY (`numeroSorteo`,`serial`), 
    KEY `new_index` (`indice`), -- ADD LATER 
    CONSTRAINT `cartones_ibfk_1` FOREIGN KEY (`numeroSorteo`) REFERENCES `sorteo` (`numeroSorteo`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

Я пытаюсь добавить:

ALTER TABLE `lotto`.`cartones` ADD CONSTRAINT `new_fk_56` FOREIGN KEY `new_fk_56` (`indice`) 
    REFERENCES `combinaciones` (`indice`) 
    ON DELETE RESTRICT 
    ON UPDATE RESTRICT; 

НО INNODB продолжает жаловаться не находя Indice:

Cannot find an index in the referenced table where the referenced columns appear as the first columns...

Но это а не внешний ключ: combinaciones(indice) такой же, как и внешний ключ sorteo(numeroSorteo)?, который является рабочим нг

EDIT:

Я проверил с: KEY 'new_index' ( Indice ) в lotto.cartones и без него.

+0

Это последняя ошибка внешнего ключа от 'SHOW ENGINE INNODB STATUS'? – derobert

ответ

5
`indice` mediumint(8) NOT NULL, 

не тот же тип

`indice` mediumint(8) unsigned NOT NULL, 

Вы должны сделать оба ваши indice знака или ни один из них без знака.

+0

Спасибо, что решил мою проблему! – Cesar

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