开发者社区 问答 正文

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

展开
收起
保持可爱mmm 2020-05-10 18:24:10 488 分享 版权
1 条回答
写回答
取消 提交回答
  • 我猜,Clients.Case_Number和/或Staff.Emp_ID不完全相同的数据类型Clients_has_Staff.Clients_Case_Number和Clients_has_Staff.Staff_Emp_ID。

    也许父表中的列是INT UNSIGNED?

    两个表中的数据类型必须完全相同。来源:stack overflow

    2020-05-10 18:24:31
    赞同 展开评论