由于外键无法创建表

时间:2012-09-18 08:52:02

标签: mysql database foreign-keys innodb

我似乎无法在这里创建第三个表。这是怎么回事?我得到了通用的cant create table errno 150消息。似乎与外键有关

表食谱

CREATE TABLE recipe(
    recipe_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    name VARCHAR(40) NOT NULL,
    description VARCHAR(40) NOT NULL,
    PRIMARY KEY (recipe_id)
)
ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;

表格成分类型

CREATE TABLE ingredient_type(
    ingredient_type_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    ingredient_type VARCHAR(40) NOT NULL,
    description VARCHAR(40) NOT NULL,
    PRIMARY KEY (ingredient_type_id)
)
ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;

表格成分

CREATE TABLE ingredient(
    ingredient_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    ingredient_type_id INT(10) NOT NULL,
    name VARCHAR(40) NOT NULL,
    brand_name VARCHAR(40) NOT NULL,
    FOREIGN KEY (ingredient_type_id) REFERENCES ingredient_type (ingredient_type_id),
    PRIMARY KEY (ingredient_id)
)
ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;

1 个答案:

答案 0 :(得分:1)

  

外键和引用键中的相应列必须在InnoDB内部具有类似的内部数据类型,以便可以在不进行类型转换的情况下对它们进行比较。 整数类型的大小和符号必须相同。字符串类型的长度不必相同。对于非二进制(字符)字符串列,字符集和排序规则必须相同。

     

来源:FOREIGN KEY Constraints in the MySQL manual

代码中的问题是ingredient_type.ingredient_type_idunsigned,但ingredient.ingredient_type_id不是。{/ p>

相关问题