我使用谷歌,我知道这个问题已被问过很多次了。但我的问题是人们提供的解决方案对我不起作用。
问题是这个常见问题: 我有两张桌子(练习和 typexerc )。在练习中,我想添加一个引用 typexerc 的外键。
首先我将 TYPEXERC_ID 列添加到练习 alter table
,我没有收到任何错误。然后我也用alter table
添加了外键,我得到了这个:
错误代码:1215。无法添加外键约束0.374秒
我执行show columns from exercise;
和show columns from typexerc;
来检查两列的数据类型是否相同(这是人们总是给出这个问题的解决方案),在这两种情况下它们都是smallint (6)。
接下来,我试着看看这些表是用不同的引擎完成的(我从图中用前向工程做了一个,用SQL手工做了另一个)。为此,我执行了show table status where name='exercise';
和show table status where name='typexerc';
,在这两种情况下,引擎都是InnoDB版本10.
所以我不知道该怎么做。任何帮助,将不胜感激。我完全没有BTW。
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;
EXERCISE:
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;
答案 0 :(得分:2)
嗯,你的陈述是错误的。您错过了您引用的列。
ALTER TABLE exercise
ADD FOREIGN KEY(TYPEXERC_ID) references typexerc(typexerc_id);