我在用MySQL创建表时遇到问题。我已把问题缩小到登记表上。
我得到的错误是:#1005-无法创建表'mcems.registered'(错误号:150)
http://pastebin.com/9cUkgs8p
最佳答案
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)
而且,绝对不需要索引
user_id
(user_id
ASC)关于mysql - MySQL创建表导致错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8887120/