MySQL 错误 1822 : Failed to add foreign key constraint; missing index for contraint BUT index exists

标签 mysql database error-handling foreign-keys

我正在尝试向我的航类计划表中添加一个外键,但它失败了,但我真的不知道为什么。外键应该引用 tblAircraft 表中的 txtAC_tag 属性,它是主键的一部分!
所以 tblAircraft 被索引(主键是由 idAC 和 txtAC_tag 组成的组合键 -> 组合主键可能是问题吗?)并且属性的数据类型确实匹配。

这是我的表声明和外键声明:

create table if not exists tblAircrafts(
idAC       int not null auto_increment,
txtAC_tag  varchar(255) not null,
txtAC_type varchar(255) not null,
primary key(idAC, txtAC_tag));

create table if not exists tblFlightSchedule(
ID int not null auto_increment,
datDate date,
txtFrom varchar(255),
txtTo   varchar(255),
txtFlight varchar(255),
numFlight_time_decimal decimal(4,2),
txtAC_tag varchar(255) not null,
txtAC_type varchar(255) not null,
numSeatCapacity int unsigned,
numLoad int unsigned, -- auslastung 
numDirt decimal(20,19),
numTotalFlightTime decimal(50,5),
numCumDirt decimal(20,15),
primary key(ID));

alter table tblflightschedule
add foreign key(txtAC_tag) references tblaircrafts(txtAC_tag);

这是错误消息:
Error Code: 1822. Failed to add the foreign key constaint. Missing index for constraint '' in the referenced table 'tblaircrafts'

有什么建议么?感谢您给我的任何帮助,谢谢!

最佳答案

问题在这里:

add foreign key(txtAC_tag) references tblaircrafts(txtAC_tag);
你在这里绑定(bind)txtAC_tagtxtAC_tagtblaircrafts具有外键关系但位于 tblaircrafts 中的表专栏txtAC_tag既不是 unique也不是 primary这就是它显示错误的原因。
对于外键关系,创建关系的父表列必须是 uniqueprimary并且它们必须具有相同的 datatypesize还。
要解决此问题,请制作 txtAC_tag列唯一。

关于MySQL 错误 1822 : Failed to add foreign key constraint; missing index for contraint BUT index exists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43511183/

相关文章:

mysql - 无法检测到Hmailserver数据库版本

swift - 无法从枚举中获取原始字符串

python - 检查构造函数参数有效性的 pythonic 方法是什么?

mysql - 长时间闲置后,服务器在 spring-boot-starter-data-jpa 中使用 Mysql 抛出错误 'Could not open JPA EntityManager for transaction'

mysql(innodb)外键约束问题

java - 由于时区不正确,无法连接到 MySQL

php - 提交表中所做的更改

python - 获取错误将错误的 SQL 语句打印到标准输出 python

mysql - 如何在 LEFT OUTER JOIN 之后重复列中剩余行中的最后一个非空值

mysql - 返回包含 "keyword"的所有列条目的计数