【问题标题】:Getting error while altering table in MySQL在 MySQL 中更改表时出错
【发布时间】:2019-10-01 09:53:36
【问题描述】:

我编写了一个 sql 文件来创建一个 Database 并在该 database 中添加 tables
这是代码:

CREATE SCHEMA `employee_details`;
CREATE TABLE `employee_details`.`employee` (
    `emp_id` INT NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(45),
    `dob` DATE,
    `joiningdate` DATE,
    `designation_id` INT,
    `gender` VARCHAR(45),
    `address` VARCHAR(90),
    `manager_id` INT,
    PRIMARY KEY (`emp_id`)
);

CREATE TABLE `employee_details`.`designation` (
    `designation_id` INT NOT NULL AUTO_INCREMENT,
    `designation` VARCHAR(45),
    `dept_id` INT,
    `salary` FLOAT,
    PRIMARY KEY (`designation_id`)
);

CREATE TABLE `employee_details`.`department` (
    `dept_id` integer NOT NULL AUTO_INCREMENT,
    `dept_name` VARCHAR(45),
    PRIMARY KEY (`dept_id`)
);

CREATE TABLE `employee_details`.`rating` (
    `emp_id` INT,
    `emp_rating` INT,
    `add_perks` FLOAT,
    `experience` INT
);

CREATE TABLE `employee_details`.`project_assign` (
    `emp_id` INT,
    `project_id` INT
);

CREATE TABLE `employee_details`.`project` (
    `project_id` INT NOT NULL AUTO_INCREMENT,
    `project_name` VARCHAR(45),
    `project_dept` INT,
    PRIMARY KEY (`project_id`)
);

ALTER TABLE employee 
ADD FOREIGN KEY (emp_id) REFERENCES rating(emp_id);

ALTER TABLE employee 
ADD FOREIGN KEY (emp_id) REFERENCES project_assign(emp_id);

ALTER TABLE employee 
ADD FOREIGN KEY (emp_id) REFERENCES employee(manager_id);

ALTER TABLE designation 
ADD FOREIGN KEY (designation_id) REFERENCES employee(designation_id);

ALTER TABLE designation 
ADD FOREIGN KEY (dept_id) REFERENCES department(dept_id);

ALTER TABLE department 
ADD FOREIGN KEY (dept_id) REFERENCES project(project_dept);

ALTER TABLE project 
ADD FOREIGN KEY (project_id) REFERENCES project_assign(project_id);

当我执行那个 sql 文件时,我得到以下错误:

15:16:50 ALTER TABLE employee ADD FOREIGN KEY (emp_id) REFERENCES rating(emp_id) 错误代码:1822。无法添加外键约束。引用表 'rating' 中的约束 'employee_ibfk_1' 缺少索引 0.000 秒

我在employeerating 中检查了emp_id 的数据类型。他们是一样的。我该如何解决这个错误?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    你所有的外键关系都是倒退的。应该是:

    ALTER TABLE rating
    ADD FOREIGN KEY (emp_id) REFERENCES employee(emp_id);
    

    所有其他外键都类似。

    【讨论】:

    • 哦....谢谢。我按照你的建议进行了修改。但是 3 个 alter 语句都失败了。 ALTER TABLE employee ADD FOREIGN KEY (emp_id) REFERENCES employee(manager_id); ALTER TABLE department ADD FOREIGN KEY (dept_id) REFERENCES designation(dept_id); ALTER TABLE project ADD FOREIGN KEY (dept_id) REFERENCES department(project_dept); 错误信息与问题相同。
    • 你也有这些倒退。 manager_id 引用 employee (emp_id)。看来您并不真正了解外键的工作原理。
    猜你喜欢
    • 2013-06-20
    • 2018-12-26
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多