gpt4 book ai didi

mysql - 错误 1215 (HY000) : Cannot add foreign key constraint at creating a table

转载 作者:行者123 更新时间:2023-11-29 17:31:32 25 4
gpt4 key购买 nike

我正在 MySQL 中创建三个表,分别是programas、indicadores 和seguimientoProgramado。

当我尝试创建第三个时,出现此错误:

错误 1215 (HY000):无法添加外键约束

表程序:

create table programas(
programa int not null,
nombrePrograma varchar(60),
primary key (programa));

表格指标:

create table indicadores(
programa int not null,
indicador varchar(10) not null,
tipo enum('blanco','gris') not null,
nombreIndicador varchar(300),
periodicidad enum('anual','semestral','trimestral'),
calculo enum('sumable','masAlto'),
correlacion varchar(1000),
comentarioTecnico varchar(1000),
primary key (programa,indicador,tipo),
foreign key (programa) references programas(programa)
);

表顺序程序:

create table seguimientoProgramado(
programa int not null,
indicador varchar(10) not null,
trim1 int,
trim2 int,
trim3 int,
trim4 int,
avanceProgramado int,
primary key (programa,indicador),
foreign key (programa) references indicadores(programa),
foreign key (indicador) references indicadores(indicador)
);

我做错了什么?

最佳答案

来自"13.1.18.6 Using FOREIGN KEY Constraints" :

  • MySQL requires indexes on (...) referenced keys (...)

您在 indicadores.programa 上有可用索引,因为主键 (programa,indicador,tipo)外键 (programa) 引用了programas(programa) 隐式创建索引,programa 是其中的第一列。

但是您在 indicadores.indicador 上没有可用的索引。 主键 (programa,indicador,tipo) 在这里不起作用,因为 indicador 是索引中的第二列。

要解决此问题,请将索引放在 indicadores.indicador 上。例如。通过更改 indicadoresCREATE 语句:

create table indicadores(
programa int not null,
...
comentarioTecnico varchar(1000),
primary key (programa,indicador,tipo),
foreign key (programa) references programas(programa),
key (indicador)
);

注意键(指示器)

关于mysql - 错误 1215 (HY000) : Cannot add foreign key constraint at creating a table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50591390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com