我用过谷歌,我知道这个问题已经被问过很多次了。但我的问题是人们提供的解决方案对我不起作用。
问题是一个常见的问题:我有两个表(锻炼和typexerc)。在练习中,我想添加一个引用typexerc的外键。
首先,我添加列TYPEXERC_ID来练习,alter table
我没有收到任何错误。然后我也添加了外键,alter table
我得到了这个:
错误代码:1215。无法添加外键约束 0.374 秒
我做了 ashow columns from exercise;
和 ashow columns from typexerc;
来检查两列的数据类型是否相同(这是人们总是给出这个问题的解决方案),并且在这两种情况下它们都是 smallint(6)。
接下来,我尝试查看这些表是否使用不同的引擎完成(我使用图表中的正向工程完成了一个,另一个使用 SQL 手动完成)。为此,我做了 ashow table status where name='exercise';
和 a show table status where name='typexerc';
,在这两种情况下,引擎都是 InnoDB 版本 10。
所以我不知道该怎么办。任何帮助,将不胜感激。顺便说一句,我完全是菜鸟。
打字机:
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;