MySQL创建表导致错误

时间:2012-01-16 22:22:32

标签: mysql

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

1 个答案:

答案 0 :(得分:3)

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)

此外,完全不需要INDEX user_iduser_id ASC)