[英]MySQL can't create table with foreign key
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
仔細檢查一下:
INT NOT NULL
),甚至有符號 基於谷歌搜索,我會假設您有一個約束,該約束的名稱與您嘗試添加約束的名稱相同。 可能是您沒有從表的舊版本或其他內容中刪除舊約束。
表創建失敗,因為未正確形成外鍵約束
不知何故,您的外鍵不正確。 如果您要引用的表尚不存在,則可能是這種情況。
在這里看看,並嘗試不給您的約束起一個名字。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.