mysql - mysql“无法添加外键约束”
问题描述
我正在尝试运行以下 SQL(在 MySQL 服务器上)创建语句:
Create table if not exists Employees (id integer primary key, name char(40) not null, department char(40) not null, salary int not null, phone char(40) not null)
Create table if not exists Managers (mid integer primary key, name char(40) not null, department char(40) not null, salary integer not null, phone char(40) not null)
Create table if not exists Departments (did integer primary key, dname char(40) not null, numberofworkers integer not null, manager char(40) not null)
Create table if not exists works_in (id integer, did integer, primary key (id, did), foreign key Employees(id) references Employees, foreign key Departments(did) references Departments)
Create table if not exists Management (mid integer, did integer, primary key (mid, did), foreign key Managers(mid) references Managers, foreign key Departments(did) references Departments)
除了最后两行,一切都很好,我得到:
ERROR 1215 (HY000): Cannot add foreign key constraint
我试着跑去SHOW ENGINE INNODB STATUS;
看看问题出在哪里,它给出了:
Error in foreign key constraint of table project/works_in:
foreign key Employees(id) references Employees, foreign key Departments(did) references Departments):
Syntax error close to:
, foreign key Departments(did) references Departments)
但这无论如何都没有帮助。我尝试检查其他类似的问题,但其中大多数建议列应该是相同的类型,这里已经是这种情况。
为什么我会收到此错误?
解决方案
声明的语法foreign key
必须包括在“其他”表中引用的键:
foreign key (did) references Departments (did)
foreign key (mid) references Managers(mid)
foreign key Departments (did) references Departments (did)
创建表格时,我强烈建议您将每一列放在单独的行上:
Create table if not exists works_in (
id integer,
did integer,
primary key (id, did),
foreign key (id) references Employees(id),
foreign key (did) references Departments(did)
);
你怎么能读到一长串不间断的列定义?
推荐阅读
- python - 简单输入的拓扑排序导致“IndexError:列表索引超出范围”
- rust - 如何约束关联类型以接受任何引用生命周期?
- qt - 如何从我的应用程序中按键盘的某个键?
- javascript - 做一个弹出评论窗口,类似于reddit html/css/js
- python - 如何从 mse 损失项中拆分活动正则化器损失(同时显示)
- java - Hibernate:如何修复“实例标识符从 29 更改为 28”
- java - 在java中将检查的异常抛出为未检查而不是包装
- sql - 如何在 SQL Server 中查找表中的重复行
- r - R中复杂多项式(右偏函数)的最大似然参数估计
- julia - JuliaPro:错误:系统错误:无法读取目录操作不允许