2013-01-04 37 views
0

我已經使用MySQL Workbench來建模我的表,並且在SQL中有一個邏輯錯誤來創建軟件生成的表。MySQL不能接受我的表

這裏是代碼:

-- ----------------------------------------------------- 
-- 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'(錯誤:150 )

我不明白!即使通過閱讀代碼本身,我也看不到任何錯誤!

任何幫助?

+9

我覺得你不向我們展示了'quiz_level'創建代碼... –

+0

通常,當工作臺抱怨它的外鍵的問題,我覺得。如果您禁用FK並運行它會通過嗎? – scoota269

+0

這是*全部*的代碼?因爲你提供給我們的SQL中沒有引用表'quiz_level'。 – Sammitch

回答

-1

你可能想嘗試讓你的PK沒有簽名。

看到這個提問/回答:Adding table with FOREIGN KEY to a MySQL database causes errno 150

編輯:你可能想嘗試要麼使所有的PK簽署或所有的PK無符號。我的猜測是quiz_level的定義目前未在您的問題中顯示,它的PK的簽名與其他表格不同。

+2

工作這不是接受的問題的答案你引用的問題。問題在於FK關係中涉及的兩個領域並不相同,一個是SIGNED,另一個是UNSIGNED。這個問題會通過將其他字段更改爲「UNSIGNED」來解決。 – Sammitch

+0

結果是什麼,OP? –

+0

謝謝!有效。 – Th3B0Y

0

你的表似乎在這裏工作

你在數據庫和表之間混合。 只是使用你想要創建的表格。

sqlfiddle

+0

它工作後,我決定使用它們簽署 – Th3B0Y