我在使用MySQL创建表时遇到问题。我已将问题缩小到注册表。 我得到的错误是:#1005 - 无法创建表'mcems.enrolled'(错误号:150) http://pastebin.com/9cUkgs8p
答案 0 :(得分:3)
CRN
字段在两个表中都应为相同类型,MCEMS
。courses
和MCEMS
。enrolled
;否则,您无法在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_id
(user_id
ASC)