Mysql 使用外键将三个表链接在一起
我有三张桌子Mysql 使用外键将三个表链接在一起,mysql,Mysql,我有三张桌子 订单表 身份证 用户名 美食家 酒鬼 食物 美食家 名字 喝 酒鬼 名字 命令如下 创建订单表------------------------------------------------- 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 nu
- 身份证
- 用户名
- 美食家
- 酒鬼
- 美食家
- 名字
- 酒鬼
- 名字
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;
创建食物表-------------------------------------------------------
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;
创建饮料表------------------------------------------------------
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是我的数据库名
谢谢大家,我能为这段代码做些什么。有三个问题需要纠正。首先,
外键
定义需要()
围绕列名,如下所示:
FOREIGN KEY (foodid) REFERENCES food (foodid),
/*---------^^^^^^^^^^----------------^^^^^^^^*/
其次,您的drinkid
外键定义引用了错误的表food
,而不是drink
:
FOREIGN KEY (drinkid) REFERENCES drink(drinkid)
最后,必须重新排列表顺序,以便在它引用的两个表之后创建order\u table
。把它们放在一起。然后它将正确执行,如本演示中所示:
有三个问题需要纠正。首先,
外键
定义需要()
围绕列名,如下所示:
FOREIGN KEY (foodid) REFERENCES food (foodid),
/*---------^^^^^^^^^^----------------^^^^^^^^*/
其次,您的drinkid
外键定义引用了错误的表food
,而不是drink
:
FOREIGN KEY (drinkid) REFERENCES drink(drinkid)
最后,必须重新排列表顺序,以便在它引用的两个表之后创建order\u table
。把它们放在一起。然后它将正确执行,如本演示中所示:
FOREIGN KEY
定义应该在列名周围有()
:FOREIGN KEY(foodid)REFERENCES foodid(foodid)
感谢Michael Berkowski,现在我添加()这个登录代码并执行它,显示错误如下----error 1005:无法创建表't.order\u table'(errno:150)---除了我上面提到的问题之外,还有几个问题。我在下面详细介绍了它们。FOREIGN KEY
定义应该在列名周围有()
:FOREIGN KEY(foodid)REFERENCES foodid(foodid)
感谢Michael Berkowski,现在我添加()这个登录代码并执行它,显示错误如下----error 1005:无法创建表't.order\u table'(errno:150)---除了我上面提到的问题之外,还有几个问题。我在下面详细介绍了它们。非常感谢你们,我重新创建了数据库,然后重新验证了你们的代码,我解决了它。其他问题,用什么方法检查外键哪个字段是注释。。。thx@user1753112我不明白你们的意思非常感谢你们,我重新创建了数据库,然后重新激活了你们的代码,我解决了它。其他问题,用什么方法检查外键哪个字段是注释。。。thx@user1753112我不明白你的意思