sql - SQL 外键错误——FK 约束缺少索引
问题描述
CREATE DATABASE Company;
USE Company;
CREATE TABLE Employee(
EmployeeID INT PRIMARY KEY,
EmployeeName CHAR(25),
DID INT NOT NULL
);
CREATE TABLE Department(
DepartmentID INT NOT NULL,
DpartmentName CHAR(25),
FOREIGN KEY (DepartmentID) REFERENCES Employee(DID)
);
这是一个用于创建 2 个表并添加外键的简单 SQL 查询,
我确定——
- 具有相同的数据类型
- 表中不同的名称。
- 正确的语法。
但是,我仍然得到错误
0 23 16:48:05 CREATE TABLE Department(
DepartmentID INT NOT NULL,
DpartmentName CHAR(25),
FOREIGN KEY (DepartmentID) REFERENCES Employee(DID)
) Error Code: 1822. Failed to add the foreign key constraint. Missing index for constraint 'department_ibfk_1' in the referenced table 'employee' 0.329 sec
我该如何纠正?提前致谢
解决方案
引用表 'employee' 中的约束 'department_ibfk_1' 缺少索引
如果要创建引用列的外键,则需要DID
在表的列上建立索引。Employee
Employee.DID
但正如评论中所建议的那样,您可能希望反过来:该Employee.DID
列听起来像是对Department.Id
.
因此,外键应该在Employee
表上,引用Department
表。(这样,就不会出现任何Department.id
已经编入索引的错误)。
推荐阅读
- r - R:rgl 将多个图链接到单个小部件
- android - macOS Android 模拟器:qemu-system-i386 - 找不到图像
- android - 如果您运行需要权限但没有获得权限的代码,Android 会发生什么?
- javascript - Excel VBA网页控件
- kotlin - 无法为类 kotlinx.coroutines.Deferred 实例化代理
- javascript - React.js 中的 https 请求未连接套接字
- django - Postman 在 django rest 框架中创建产品对象时给出“该字段已存在”
- mysql - docker-compose rails mysql连接被拒绝
- spring-boot - 启动 Spring Boot 应用程序时出现 liquibase 问题
- html - 如何让 Vuetify v-for 渲染更快