0

MySQL Workbenchを使用してテーブルをモデル化しましたが、ソフトウェアによって生成されたテーブルを作成するためのSQLに論理エラーがあります。

コードは次のとおりです。

-- -----------------------------------------------------
-- Table `trickani_main`.`user`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `trickani_main`.`user` (
  `iduser` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `fb_id` VARCHAR(50) NOT NULL ,
  `email` VARCHAR(40) NOT NULL ,
  `first_name` VARCHAR(15) NOT NULL ,
  `gender` VARCHAR(1) NOT NULL ,
  PRIMARY KEY (`iduser`) ,
  UNIQUE INDEX `fb_id_UNIQUE` (`fb_id` ASC) ,
  UNIQUE INDEX `email_UNIQUE` (`email` ASC) )
ENGINE = InnoDB
AUTO_INCREMENT = 1;


-- -----------------------------------------------------
-- Table `trickani_main`.`quiz_list`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `trickani_main`.`quiz_list` (
  `id_quiz_list` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `difficult` TINYINT(4) NOT NULL ,
  PRIMARY KEY (`id_quiz_list`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `trickani_main`.`user_quiz_list`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `trickani_main`.`user_quiz_list` (
  `iduser` INT UNSIGNED NOT NULL ,
  `id_quiz_list` INT UNSIGNED NOT NULL ,
  `level_reached` INT UNSIGNED NOT NULL DEFAULT 0 ,
  PRIMARY KEY (`iduser`, `id_quiz_list`) ,
  INDEX `fk_quiz_list_user1_idx` (`iduser` ASC) ,
  INDEX `fk_user_quiz_list_quiz_list1_idx` (`id_quiz_list` ASC) ,
  CONSTRAINT `fk_quiz_list_user1`
    FOREIGN KEY (`iduser` )
    REFERENCES `trickani_main`.`user` (`iduser` )
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_user_quiz_list_quiz_list1`
    FOREIGN KEY (`id_quiz_list` )
    REFERENCES `trickani_main`.`quiz_list` (`id_quiz_list` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
AUTO_INCREMENT = 1;

その結果、次のメッセージが表示されます。

#1005-テーブル'trickani_main.quiz_level'を作成できません(errno:150)

理解できません!コード自体を読んでもエラーは見られません!

何か助けはありますか?

4

2 に答える 2

0

あなたのテーブルはここで機能しているようです

データベースとテーブルを混在させています。作成したいテーブルを使用するだけです。

sqlfiddle

于 2013-01-04T16:37:10.790 に答える
-1

PKを署名なしにしないようにしてみてください。

この質問/回答を参照してください:外部キーを含むテーブルをMySQLデータベースに追加すると、errno150が発生します

編集:すべてのPKを署名するか、すべてのPKを署名しないようにすることをお勧めします。私の推測では、quiz_level現在あなたの質問に表示されていないの定義には、他のテーブルとは符号が異なるPKが含まれています。

于 2013-01-04T16:11:47.790 に答える