Mysql Can';我不明白为什么我能';t添加外键约束
我用过谷歌,我知道这个问题已经被问了很多次了。但我的问题是人们提供的解决方案不适合我 这是一个常见的问题: 我有两张桌子(exercise和typexerc)。在练习中我想添加一个引用typexerc的外键 首先,我使用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中的列检查两列的数据类型是否相同
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相同。真不敢相信这么简单。正如我说的,我是诺布。谢谢你的时间,也谢谢所有想帮忙的人。非常感谢。