我似乎无法在这里创建第三个表。这是怎么回事?我得到了通用的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;
答案 0 :(得分:1)
外键和引用键中的相应列必须在InnoDB内部具有类似的内部数据类型,以便可以在不进行类型转换的情况下对它们进行比较。 整数类型的大小和符号必须相同。字符串类型的长度不必相同。对于非二进制(字符)字符串列,字符集和排序规则必须相同。
代码中的问题是ingredient_type.ingredient_type_id
为unsigned
,但ingredient.ingredient_type_id
不是。{/ p>