当我尝试使用几个外键创建一个表时,我收到以下错误。如果我只包含userID外键,它会顺利进行,但当我尝试获取其他外键时也会抱怨。这是什么交易?
ERROR 1005: Can't create table 'ps5_lwilkins.PhoneNumber' (errno: 150)
SQL Statement:
CREATE TABLE `ps5_lwilkins`.`PhoneNumber` (
`userID` CHAR(25) NOT NULL ,
`resumeID` CHAR(30) NOT NULL ,
`number` CHAR(45) NOT NULL ,
PRIMARY KEY (`userID`, `resumeID`, `number`) ,
INDEX `user_phoneNumber_fk1` (`userID` ASC) ,
INDEX `resume_phoneNumber_fk3` (`resumeID` ASC) ,
CONSTRAINT `user_phoneNumber_fk1`
FOREIGN KEY (`userID` )
REFERENCES `ps5_lwilkins`.`User` (`userID` )
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `resume_phoneNumber_fk3`
FOREIGN KEY (`resumeID` )
REFERENCES `ps5_lwilkins`.`Resume` (`resumeID` )
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB
以下是User的模式:
User(userid: CHAR(25), pass: VARCHAR(25)
)userid
是PK
以下是Resume的架构:
Resume(userID: CHAR(25), resumeID: CHAR(30)
其他几个没有重要的属性)。 PK是(userID, resumeID)
。
有什么想法吗?需要更多信息?
看看与此类似的其他问题,我认为它在resumeID上有点格式错误的FK ......但是我看不到哪里!
我为FK约束btw尝试了几个不同的名字。
编辑:我没有权限执行SHOW ENGINE INNODB STATUS
答案 0 :(得分:0)
您的评论如上所述。你需要改变这个:
INDEX `user_phoneNumber_fk1` (`userID` ASC) ,
INDEX `resume_phoneNumber_fk3` (`resumeID` ASC) ,
和此:
FOREIGN KEY (`resumeID` )
REFERENCES `ps5_lwilkins`.`Resume` (`resumeID` )
到此:
INDEX `phoneNumber_fks` (`userID` ASC, `resumeID` ASC) ,
和此:
FOREIGN KEY (`userID`, `resumeID` )
REFERENCES `ps5_lwilkins`.`Resume` (`userID`, `resumeID` )