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我不明白你的意思