0

次のスニペットで MySQL コード エラー 150 が発生する理由を理解するのに苦労しています。

-- Exercise Categories
CREATE TABLE Exercise_cat
(
ec_id       INT NOT NULL AUTO_INCREMENT,
name        VARCHAR(25),
PRIMARY KEY (ec_id)
);
-- This inserts fine

-- Exercise Descriptions
CREATE TABLE Exercise_desc
(
e_id        INT NOT NULL AUTO_INCREMENT,
name        VARCHAR(25),
ec_id       INT NOT NULL,
cal_per_hour    INT NOT NULL,
PRIMARY KEY (e_id),
FOREIGN KEY (ec_id) REFERENCES Excercise_cat(ec_id)
);
-- ERROR (foreign key constraint not formed)

[1] [2]のように、列名を省略しませんでした。
MySQL が要求するように、セミコロンがあります。

テーブルを作成できるように外部キーを修正するにはどうすればよいですか?

4

2 に答える 2

1

あなたはそうではExercise_catないという意味ですExcercise_cat

CREATE TABLE Exercise_desc
(
    e_id        INT NOT NULL AUTO_INCREMENT,
    name        VARCHAR(25),
    ec_id       INT NOT NULL,
    cal_per_hour    INT NOT NULL,
    PRIMARY KEY (e_id),
    FOREIGN KEY (ec_id) REFERENCES Exercise_cat(ec_id)
);
于 2012-12-16T06:36:09.973 に答える
0

参照しているテーブルExcercise_catは存在しません。しかし、Exercise_cat は存在​​します。

したがって、次の行を修正する必要があります。

FOREIGN KEY (ec_id) REFERENCES Excercise_cat(ec_id)
                                 ^
                                 |
                                 +-- Remove this extra 'c'
于 2012-12-16T06:36:23.640 に答える