我正试图将我的新模式转发到我的数据库服务器上,但我不知道为什么会出现这种错误。 我试着在这里搜索答案,但我找到的所有东西都说要把数据库引擎设置为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
你可能得到一个外键约束错误的原因。
1.你没有在所有的表上使用InnoDB作为引擎。 2.2.你试图在目标表上引用一个不存在的键。 确保它是另一个表中的*键(可以是主键或唯一键)。 3.3.列的类型不一样(例外是引用表的列可以是空的)。 4.4. 如果PK/FK是varchar,请确保两个表的排序是相同的。
更新:
5.其中一个原因可能是你用于 "ON DELETE SET NULL "的列没有定义为空。所以要确保该列被设置为默认的null。
检查这些。