1

ここで 3 番目のテーブルを作成できないようです。どうしたの?一般的な cant create table errno 150 メッセージが表示されます。外部キーと関係があるようです

テーブルレシピ

CREATE TABLE recipe(
    recipe_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    name VARCHAR(40) NOT NULL,
    description VARCHAR(40) NOT NULL,
    PRIMARY KEY (recipe_id)
)
ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;

テーブルの成分_タイプ

CREATE TABLE ingredient_type(
    ingredient_type_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    ingredient_type VARCHAR(40) NOT NULL,
    description VARCHAR(40) NOT NULL,
    PRIMARY KEY (ingredient_type_id)
)
ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;

テーブル成分

CREATE TABLE ingredient(
    ingredient_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    ingredient_type_id INT(10) NOT NULL,
    name VARCHAR(40) NOT NULL,
    brand_name VARCHAR(40) NOT NULL,
    FOREIGN KEY (ingredient_type_id) REFERENCES ingredient_type (ingredient_type_id),
    PRIMARY KEY (ingredient_id)
)
ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;
4

1 に答える 1

1

外部キーと参照キーの対応する列は、型変換なしで比較できるように、InnoDB内で同様の内部データ型を持っている必要があります。整数型のサイズと符号は同じでなければなりません。文字列タイプの長さは同じである必要はありません。非バイナリ(文字)文字列列の場合、文字セットと照合は同じである必要があります。

出典:MySQLマニュアルの外部キー制約

あなたのコードの問題はそれingredient_type.ingredient_type_idですがunsigned、 そうでingredient.ingredient_type_idはありません。

于 2012-09-18T15:26:03.510 に答える