mysql - 在 MySQL 中更改表时出现错误

标签 mysql sql

我编写了一个 sql 文件来创建数据库,并在该数据库中添加
这是代码:

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) Error Code: 1822. Failed to add the foreign key constraint. Missing index for constraint 'employee_ibfk_1' in the referenced table 'rating' 0.000 sec

我检查了employee ratingemp_id的数据类型。他们是一样的。我该如何修复这个错误?

最佳答案

您的所有外键关系都是向后的。应该是:

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

对于所有其他外键也类似。

关于mysql - 在 MySQL 中更改表时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58182290/

相关文章:

sql - 我们如何转换时间部分(HH :MM:SS) of a julian date to normal date time in sql server?

android - 使用自增主键迁移 Room 数据库

sql - 在 SQL 中编写 CASE 语句

mysql - 我的 CakePHP HABTM 查询出了什么问题?

PHP - XML 到 MySQL

php - mysql_result() 期望参数 1 是给定的资源、对象

SQL条件聚合?

sql - 如何在 SQL Oracle 中合并行

Visual Studio 上的 MySql 更新参数有奇怪的行为

mysql - 从一个表中获取总计,引用另一个表中的 ID