mysql - 错误1215 MYSQL 无法添加外键约束,

标签 mysql sql workbench

我有这个代码:

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;

我认为外键很好。

最佳答案

如果这些是没有值的新表,则列似乎有错误

一个有 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 个键,但我没有架构

关于mysql - 错误1215 MYSQL 无法添加外键约束,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17532926/

相关文章:

php - 带有php mysql错误的登录功能

mysql - 在 MySQL 中的单行 CASE...WHEN 语句中使用多个条件

mysql - 我如何在 MYSQL 6.3 工作台中启用 EER 模型?或者如何为我的 "offers"表创建外键?

c# - 如何从 MySql 工作台获取 MySql DB 连接信息?

C# MySQLCommand批量更新失败

mysql - 使用 GORM 在 MySQL 中获取 NULL 日期时间值

c# - LINQ 相似的查询完全不同的执行时间

mysql - MySQL Workbench 中的转储,未知数据库

php - 为每个结果输出特定的数组键

java - 如何用Java创建MySQL表?