【问题标题】:SQL error - Failed to add the foreign key constraintSQL 错误 - 添加外键约束失败
【发布时间】:2021-06-17 23:16:34
【问题描述】:
CREATE TABLE employee (
    emp_id INT,
    first_name VARCHAR(40),
    last_name VARCHAR(40),
    birth_day DATE,
    sex VARCHAR(1),
    salary INT,
    super_id INT,
    branch_id INT,
    PRIMARY KEY (emp_id)
);

CREATE TABLE branch(
    branch_id INT,
    branch_name VARCHAR(40),
    mgr_id INT,
    mgr_start_date DATE,
    FOREIGN KEY(mgr_id) REFERENCES employee(emp_id) ON DELETE SET NULL
);



ALTER TABLE employee
ADD FOREIGN KEY(branch_id)
REFERENCES branch(branch_id)
ON DELETE SET NULL;

我不确定我做错了什么。当我运行 last 查询时,我不断收到

"添加外键约束失败"

错误提示引用表“分支”中的约束“employee_ibfk_2”缺少索引

【问题讨论】:

    标签: mysql sql foreign-keys


    【解决方案1】:

    外键引用的列必须是键。

    大概你忘了把branch_id声明为主键?

    试试:

    ...
    
    CREATE TABLE branch(
        branch_id INT,
        branch_name VARCHAR(40),
        mgr_id INT,
        mgr_start_date DATE,
        PRIMARY KEY (branch_id),
        FOREIGN KEY(mgr_id) REFERENCES employee(emp_id) ON DELETE SET NULL
    );
    
    ...
    

    【讨论】:

    • 非常感谢!!我完全忘记了将其设置为主键!
    【解决方案2】:

    branch 表中的 branch_id 列未编入索引。外键约束的要求。

    像这样添加索引:

    ALTER TABLE `branch` 
    ADD INDEX `branch_id` (`branch_id` ASC) VISIBLE;
    ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      相关资源
      最近更新 更多