MySQL错误1215:无法添加外键约束我正试图将我的新模式转发到我的db服务器上,但我不知道为什么会出现这个错误。我试图在这里搜索答案,但我发现的所有内容都说,要么将db引擎设置为Innodb,要么确保我试图用作外键的键是它们自己表中的主键。如果我没有弄错的话,这两件事我都做过了。你们还能提供什么帮助吗?Executing SQL script in server
ERROR: Error 1215: Cannot add foreign key constraint-- -------------------------------------------------------
Table `Alternative_Pathways`.`Clients_has_Staff`-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Alternative_Pathways`.`Clients_has_Staff` (
`Clients_Case_Number` INT NOT NULL ,
`Staff_Emp_ID` INT NOT NULL ,
PRIMARY KEY (`Clients_Case_Number`, `Staff_Emp_ID`) ,
INDEX `fk_Clients_has_Staff_Staff1_idx` (`Staff_Emp_ID` ASC) ,
INDEX `fk_Clients_has_Staff_Clients_idx` (`Clients_Case_Number` ASC) ,
CONSTRAINT `fk_Clients_has_Staff_Clients`
FOREIGN KEY (`Clients_Case_Number` )
REFERENCES `Alternative_Pathways`.`Clients` (`Case_Number` )
ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_Clients_has_Staff_Staff1`
FOREIGN KEY (`Staff_Emp_ID` )
REFERENCES `Alternative_Pathways`.`Staff` (`Emp_ID` )
ON DELETE NO ACTION ON UPDATE NO ACTION)ENGINE = InnoDBSQL脚本执行完成:语句:7成功,1失败下面是父表的SQL。CREATE TABLE IF NOT EXISTS `Alternative_Pathways`.`Clients` (
`Case_Number` INT NOT NULL ,
`First_Name` CHAR(10) NULL ,
`Middle_Name` CHAR(10) NULL ,
`Last_Name` CHAR(10) NULL ,
`Address` CHAR(50) NULL ,
`Phone_Number` INT(10) NULL ,
PRIMARY KEY (`Case_Number`) )ENGINE = InnoDBCREATE TABLE IF NOT EXISTS `Alternative_Pathways`.`Staff` (
`Emp_ID` INT NOT NULL ,
`First_Name` CHAR(10) NULL ,
`Middle_Name` CHAR(10) NULL ,
`Last_Name` CHAR(10) NULL ,
PRIMARY KEY (`Emp_ID`) )ENGINE = InnoDB
3 回答
慕雪6442864
TA贡献1812条经验 获得超5个赞
Clients.Case_Number
Staff.Emp_ID
Clients_has_Staff.Clients_Case_Number
Clients_has_Staff.Staff_Emp_ID
.
INT UNSIGNED
?
www说
TA贡献1775条经验 获得超8个赞
您并不是将InnoDB用作所有表上的引擎。 您正在尝试引用目标表上不存在的键。确保它是 钥匙
在另一个表上(它可以是主键或唯一键) 列的类型不一样(例外是引用表上的列可以为空)。 如果PK/FK是一个varchar,那么确保排序规则对两者都是相同的。
最新情况:
其中一个原因也可能是您所使用的列。 ON DELETE SET NULL
未定义为NULL。因此,请确保该列设置为默认NULL。
人到中年有点甜
TA贡献1895条经验 获得超7个赞
SHOW ENGINE INNODB STATUS;
无法在引用的表中找到索引,其中引用的列显示为第一列,或表中的列类型和引用的表不匹配约束。
添加回答
举报
0/150
提交
取消