Mysql Can';我不明白为什么我能';t添加外键约束

Mysql Can';我不明白为什么我能';t添加外键约束,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我用过谷歌,我知道这个问题已经被问了很多次了。但我的问题是人们提供的解决方案不适合我 这是一个常见的问题: 我有两张桌子(exercise和typexerc)。在练习中我想添加一个引用typexerc的外键 首先,我使用alter table将列TYPEXERC\u ID添加到exercise,没有得到任何错误。然后我也用altertable添加外键,得到如下结果: 错误代码:1215。无法添加外键约束0.374秒 我做了一个显示练习中的列和a显示typexerc中的列检查两列的数据类型是否相同

我用过谷歌,我知道这个问题已经被问了很多次了。但我的问题是人们提供的解决方案不适合我

这是一个常见的问题: 我有两张桌子(exercisetypexerc)。在练习中我想添加一个引用typexerc的外键

首先,我使用
alter table
将列TYPEXERC\u ID添加到exercise,没有得到任何错误。然后我也用
altertable
添加外键,得到如下结果:

错误代码:1215。无法添加外键约束0.374秒

我做了一个
显示练习中的列
和a
显示typexerc中的列
检查两列的数据类型是否相同(这是人们经常给出的解决方案),并且在这两种情况下都是smallint(6)

接下来,我尝试查看这些表是否是用不同的引擎完成的(一个是用图表中的正向工程,另一个是用SQL手动完成的)。为此,我在name='exercise'中执行一个
显示表状态
显示name='typexerc'所在的表状态在这两种情况下,引擎都是InnoDB版本10

所以我不知道该怎么办。任何帮助都将不胜感激。顺便说一句,我完全不知道

TYPEXERC:

    CREATE TABLE `typexerc` (
  `TYPEXERC_ID` smallint(6) NOT NULL,
  `TYPEXERC_NAME` varchar(25) NOT NULL,
  PRIMARY KEY (`TYPEXERC_ID`),
  UNIQUE KEY `TYPEXERC_ID` (`TYPEXERC_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
练习:

CREATE TABLE `exercise` (
  `EXER_ID` int(11) NOT NULL,
  `EXER_DATE` date NOT NULL,
  `EXER_TIME` time NOT NULL,
  `EXER_CAL` smallint(6) NOT NULL,
  `TYPEXERC_ID` smallint(6) NOT NULL,
  PRIMARY KEY (`EXER_ID`),
  UNIQUE KEY `EXER_ID` (`EXER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='          ';
现在我做到了:

ALTER TABLE exercise
ADD FOREIGN KEY(TYPEXERC_ID) references typexerc;

嗯,你的说法是错误的。您缺少所引用的列

ALTER TABLE exercise
ADD FOREIGN KEY(TYPEXERC_ID) references typexerc(typexerc_id);
  • 现场观看它的工作

tl;dr只是发布表格结构,而不是你的一步一步指导你做了什么。这根本没有帮助。是否有可能练习中的某些记录在typeexerc中没有相应的条目?您是否尝试过这个问题的建议答案@爱好者们对此感到抱歉。我将把SQL语句放在这里,说明答案适用于不同的数据类型。我检查了数据类型是否与show columns相同。真不敢相信这么简单。正如我说的,我是诺布。谢谢你的时间,也谢谢所有想帮忙的人。非常感谢。