1

私は3つのテーブルを持っています

  1. 注文表

    • ID
    • ユーザー名
    • 食通
    • 酔っ払い
  2. 食物

    • 食通
    • 名前
  3. 飲む

    • 酔っ払い
    • 名前

次のようなコマンド 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)

which t は私のデータベース名なので、このコードで何ができるでしょうか。皆さんに感謝します。

4

1 に答える 1

1

修正すべき問題は 3 つあります。まず、次のようにFOREIGN KEY定義()で列名を囲む必要があります。

FOREIGN KEY (foodid) REFERENCES food (foodid),
/*---------^^^^^^^^^^----------------^^^^^^^^*/

次に、drinkid外部キー定義が間違ったテーブルを参照していfoodますdrink

FOREIGN KEY (drinkid) REFERENCES drink(drinkid)

最後に、テーブルが参照する 2 つのテーブルの後order_tableに作成されるように、テーブルの順序を再配置する必要があります。すべてをまとめてください。このデモのように、正しく実行されます: http://sqlfiddle.com/#!2/b3aee

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 drink(drinkid)
)ENGINE=innodb;
于 2013-03-04T01:28:56.653 に答える