1

次のテーブルを作成するときに errno 150 が表示されます。最初の 2 つは正常に動作しますが、3 番目は次のエラーをスローします。

ERROR 1005 (HY000): Can't create table 'test2.exercise_type_exercise_groups' (errno: 150)

何か案は?タイプ、長さ、文字セット、および照合がすべてのキー列で同一であることを確認しました...他に何が問題でしょうか?

助けてくれてありがとう!

CREATE TABLE `exercise_groups` (
    `id` VARCHAR(255) NOT NULL,
    PRIMARY KEY `pk_exercise_groups` (`id`)
) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;

CREATE TABLE `exercise_types` (
    `id` VARCHAR(255) NOT NULL,
    PRIMARY KEY `pk_exercise_types` (`id`)
) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;

CREATE TABLE `exercise_type_exercise_groups` (
    `exercise_type` VARCHAR(255) NOT NULL,
    `exercise_group` VARCHAR(255) NOT NULL,
    `link_type` ENUM('primary', 'ancillary'),
    PRIMARY KEY `pk_exercise_type_exercise_groups` (`exercise_type`, `exercise_group`),
    CONSTRAINT `fk_exercise_type_exercise_groups_exercise_type` 
        FOREIGN KEY (`exercise_type`) 
        REFERENCES `exercise_type` (`id`),
    CONSTRAINT `fk_exercise_type_exercise_groups_exercise_group` 
        FOREIGN KEY (`exercise_group`) 
        REFERENCES `exercise_group` (`id`)
) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;
4

1 に答える 1

3

errno 150ほとんど役に立たない一般的な外部キー エラーです。これには、少なくとも 4 つの理由があります。

  1. 列の型が一致しません
  2. 列が参照されたテーブルのキーではないか、参照された列/テーブルが存在しません (これはあなたの問題でした。他のテーブルのスペルが間違っていました)。
  3. どのテーブルも ではありませんInnoDB
  4. そこにない外部キーを削除しようとしています。
于 2013-02-18T00:58:10.603 に答える