0
CREATE  TABLE `assessmentbookdb`.`MCQs` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `MCQAnswer` VARCHAR(200) NOT NULL ,
  `QuestionID` INT NOT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `QuestionID` (`QuestionID` ASC) ,
  CONSTRAINT `QuestionID`
    FOREIGN KEY (`QuestionID` )
    REFERENCES `assessmentbookdb`.`Question` (`QuestionID` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

メッセージ ログ:

エラー 1005: テーブル 'assessmentbookdb.mcqs' を作成できません (エラー番号: 121) SQL ステートメント:

CREATE  TABLE `assessmentbookdb`.`MCQs` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `MCQAnswer` VARCHAR(200) NOT NULL ,
  `QuestionID` INT NOT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `QuestionID` (`QuestionID` ASC) ,
  CONSTRAINT `QuestionID`
    FOREIGN KEY (`QuestionID` )
    REFERENCES `assessmentbookdb`.`Question` (`QuestionID` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
    ENGINE = InnoDB
4

5 に答える 5

6

次のことを再確認してください。

  • キーの名前は一意です
  • 結合している2つのキーは、まったく同じデータ型(ここINT NOT NULLでは:)であり、符号も同じです。
  • 参照フィールドは実際に存在します
于 2012-08-02T10:34:16.577 に答える
2

グーグルに基づいて、制約を追加しようとしているのと同じ名前で存在する制約があると想定します。古いバージョンのテーブルなどから古い制約を削除しなかった可能性があります。

于 2012-08-02T10:35:54.813 に答える
0

ここを見て、制約に名前を付けないようにしてください。

于 2012-08-02T10:38:12.343 に答える
0

外部キー制約が正しく形成されていないため、テーブルの作成に失敗しました

どういうわけか、外部キーが正しくありません。これは、参照しているテーブルがまだ存在しない場合に発生する可能性があります。

于 2012-08-02T10:34:09.043 に答える
-1

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

InnoDB は、テーブル間で関連データを相互参照できるようにする外部キーと、この分散したデータの一貫性を保つのに役立つ外部キー制約をサポートしています。CREATE TABLE または ALTER TABLE ステートメントでの InnoDB 外部キー制約定義の構文は次のようになります。

 [CONSTRAINT [symbol]] FOREIGN KEY
 [index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]

 reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION
于 2012-08-02T10:44:02.563 に答える