MySQL Workbench,DB新手,约束问题 - 错误1005,错误121

时间:2012-03-22 17:18:02

标签: mysql

好的,我理解问题是什么,我理解约束,因为它们需要在db中是唯一的(之前我不知道,所以我学到了一些东西。确定他们目前的用途,但可以稍后学习。我的问题是,我认为一个简单的问题就是不了解MySQL Workbench如何分配约束。显然,你可以在选项中设置它自动执行,我认为我已经设置要做;然而,我做了一些事情,因为他们使用相同的FK,所以我做了很多约束,这里是我的意思的一个例子: 表1:

    CONSTRAINT `dish_type`
    FOREIGN KEY (`dish_type` )
    REFERENCES `acs_operations_dev`.`dish_types` (`id` )
    ON DELETE NO ACTION
    ON UPDATE CASCADE,
  CONSTRAINT `tech_number`
    FOREIGN KEY (`tech_number` )
    REFERENCES `acs_operations_dev`.`employees` (`tech_number` )
    ON DELETE NO ACTION
    ON UPDATE CASCADE)

表2

PRIMARY KEY (`id`) ,
  INDEX `tech_number` (`tech_number` ASC) ,
  INDEX `car` (`car` ASC) ,
  INDEX `field_dev_coach` (`field_dev_coach` ASC) ,
  UNIQUE INDEX `etad_user_UNIQUE` (`etad_user` ASC) ,
  CONSTRAINT `tech_number`
    FOREIGN KEY (`tech_number` )
    REFERENCES `acs_operations_dev`.`employees` (`tech_number` )
    ON DELETE NO ACTION
    ON UPDATE CASCADE,
  CONSTRAINT `car`
    FOREIGN KEY (`car` )
    REFERENCES `acs_operations_dev`.`cars` (`id` )
    ON DELETE NO ACTION
    ON UPDATE CASCADE,

我遗漏了一些部分 - 只是试图表明问题 - 即在tech_number上。

我在模型页面上手动创建了表格(即我没有使用EER“绘图”样式)。当我创建FK时,这就是我所做的:

MySQL Workbench - FK Creation Example

我在这里做的是什么导致WB不自动分配约束?另外,我该怎么做才能在WB中修复它。

我希望这是有道理的。我在每张桌子上使用这种方法,顺便说一句 - 所以它是全面的。谢谢!

麦克

1 个答案:

答案 0 :(得分:1)

  1. 检查表格是InnoDB

  2. 检查外键的列是否具有相同的数据类型。如果您使用整数列,请检查两者是无符号还是已签名。

  3. 检查必须是unqiue的外键名称。我通常使用以下fromat fk_currenttablename_foreignkeytablename