我在用MySQL创建表时遇到问题。我已把问题缩小到登记表上。
我得到的错误是:#1005-无法创建表'mcems.registered'(错误号:150)
http://pastebin.com/9cUkgs8p

最佳答案

CRN字段在两个表中的类型应该相同,MCEMScoursesMCEMSenrolled;否则,不能在FOREIGN KEY中使用。你有

CREATE  TABLE IF NOT EXISTS `MCEMS`.`courses` (
`CRN` INT NOT NULL , ...)
and
CREATE  TABLE IF NOT EXISTS `MCEMS`.`enrolled` (
`user_id` INT NOT NULL ,
`CRN` VARCHAR(45) , -- must be INT (also NOT NULL because it's part of PK)!!!
PRIMARY KEY (`user_id`, `CRN`) ,
INDEX `user_id` (`user_id` ASC) ,
INDEX `CRN` (`CRN` ASC) ,
FOREIGN KEY (`user_id`)
REFERENCES `MCEMS`.`users` (`user_id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (`CRN`)
REFERENCES `MCEMS`.`courses` (`CRN`)
ON DELETE CASCADE
ON UPDATE CASCADE)

而且,绝对不需要索引user_iduser_idASC)

关于mysql - MySQL创建表导致错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8887120/

10-11 03:17