我有三张桌子
order_table
食品
饮
命令如下 创建order_table表----------------------------------------------- -
create table order_table(
id int not null auto_increment,
user_name varchar(26) not null,
foodid int(11) not null,
drinkid int(11) not null,
primary key(id),
FOREIGN KEY (foodid) REFERENCES food(foodid),
FOREIGN KEY (drinkid) REFERENCES food(drinkid)
)ENGINE=innodb;
创建食物表-------------------------------------------- -----------
create table food (
foodid int(11) not null auto_increment,
name varchar(26) not null,
primary key(foodid)
)ENGINE=innodb;
创建饮料表-------------------------------------------- ----------
create table drink (
drinkid int(11) not null auto_increment,
name varchar(26) not null,
primary key(drinkid)
)ENGINE=innodb;
现在我遇到的问题是
ERROR 1005 : Can't create table 't.order_table' (errno: 150)
其中t是我的数据库名称 所以我能为这段代码做些什么,感谢每一个人。
答案 0 :(得分:1)
有三个问题需要纠正。首先,FOREIGN KEY
定义需要()
围绕列名称,如下所示:
FOREIGN KEY (foodid) REFERENCES food (foodid),
/*---------^^^^^^^^^^----------------^^^^^^^^*/
其次,您的drinkid
外键定义引用了错误的表food
,而不是drink
:
FOREIGN KEY (drinkid) REFERENCES drink(drinkid)
最后,您必须重新排列表顺序,以便在引用的两个表之后创建 。把它们放在一起。然后它将正确执行,如本演示中所示:http://sqlfiddle.com/#!2/b3aee
order_table