2013-07-08 84 views
0

我有這樣的代碼:錯誤1215 MYSQL無法添加外鍵約束,

CREATE TABLE IF NOT EXISTS `biblioteca`.`ejemplar` (

    `idejemplar` INT(11) NOT NULL AUTO_INCREMENT , 

    `estado` VARCHAR(45) NOT NULL , 

    `comentario` VARCHAR(45) NULL , 

    `isbn` VARCHAR(45) NOT NULL , 

    PRIMARY KEY (`idejemplar`) , 

    INDEX `fk_ejemplar_libro1_idx` (`isbn` ASC) , 

    CONSTRAINT `fk_ejemplar_libro1` 

    FOREIGN KEY (`isbn`) 

    REFERENCES `biblioteca`.`libro` (`isbn`) 

    ON DELETE NO ACTION 

    ON UPDATE NO ACTION) 

ENGINE = InnoDB 

DEFAULT CHARACTER SET = utf8 

,這就是提到的是表:

CREATE TABLE IF NOT EXISTS `biblioteca`.`libro` (
    `isbn` VARCHAR(25) NOT NULL , 
    `idcategoria` INT(11) NOT NULL , 
    `ideditorial` INT(11) NOT NULL , 
    `titulo` VARCHAR(45) NOT NULL , 
    `autor` VARCHAR(45) NOT NULL , 
    `reseña` VARCHAR(45) NULL , 
    PRIMARY KEY (`isbn`) , 
    INDEX `fk_libro2_idx` (`idcategoria` ASC) , 
    INDEX `fk_libro3_idx` (`ideditorial` ASC) , 
    CONSTRAINT `fk_libro2` 
    FOREIGN KEY (`idcategoria`) 
    REFERENCES `biblioteca`.`categoria` (`idcategoria`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `fk_libro3` 
    FOREIGN KEY (`ideditorial`) 
    REFERENCES `biblioteca`.`editorial` (`ideditorial`) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE) 
ENGINE = InnoDB 
DEFAULT CHARACTER SET = utf8; 

,我認爲這就是外鍵都不錯。

+0

是另一個表「圖書館」innodb? – exussum

+0

biblioteca是模式,ejemplar和libro有innoDB – user2561784

+0

在那種情況下,有一個值不存在,使用左連接找出哪個 – exussum

回答

2

如果這些是沒有價值的新鮮表,好像與列的錯誤

一個有一個varchar(25),另一個是var_char(45),使他們同樣

編輯:

CREATE TABLE IF NOT EXISTS `biblioteca`.`libro` (
    `isbn` VARCHAR(45) NOT NULL , 
    `idcategoria` INT(11) NOT NULL , 
    `ideditorial` INT(11) NOT NULL , 
    `titulo` VARCHAR(45) NOT NULL , 
    `autor` VARCHAR(45) NOT NULL , 
    `reseña` VARCHAR(45) NULL , 
    PRIMARY KEY (`isbn`) , 
    INDEX `fk_libro2_idx` (`idcategoria` ASC) , 
    INDEX `fk_libro3_idx` (`ideditorial` ASC)) 

ENGINE = INNODB 
DEFAULT CHARACTER SET = utf8; 



CREATE TABLE IF NOT EXISTS `biblioteca`.`ejemplar` (

    `idejemplar` INT(11) NOT NULL AUTO_INCREMENT , 

    `estado` VARCHAR(45) NOT NULL , 

    `comentario` VARCHAR(45) NULL , 

    `isbn` VARCHAR(45) NOT NULL , 

    PRIMARY KEY (`idejemplar`) , 

    INDEX `fk_ejemplar_libro1_idx` (`isbn` ASC) , 

    CONSTRAINT `fk_ejemplar_libro1` 

    FOREIGN KEY (`isbn`) 

    REFERENCES `biblioteca`.`libro` (`isbn`) 

    ON DELETE NO ACTION 

    ON UPDATE NO ACTION) 

ENGINE = INNODB 

DEFAULT CHARACTER SET = utf8; 

對我來說沒問題。我拿走了其他2個鍵,我沒有模式雖然

+0

這是很好的建議。但這不是錯誤信息的原因。 –

相關問題