MySQL错误1215:无法添加外键约束

我正在尝试将新模式转发工程到我的数据库服务器上,但是我不知道为什么会收到此错误。我试图在这里搜索答案,但是我发现的所有内容都说是将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 = InnoDB

SQL脚本执行完成:语句:成功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 = InnoDB

CREATE 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

回答:

我猜,Clients.Case_Number和/或Staff.Emp_ID不完全相同的数据类型Clients_has_Staff.Clients_Case_NumberClients_has_Staff.Staff_Emp_ID

也许父表中的列是INT UNSIGNED

两个表中的数据类型必须完全相同。

以上是 MySQL错误1215:无法添加外键约束 的全部内容, 来源链接: utcz.com/qa/408011.html

回到顶部