无法弄清楚为什么我不能添加外键约束

时间:2013-11-05 12:06:37

标签: mysql sql mysql-workbench

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

问题是这个常见问题: 我有两张桌子(练习 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;

1 个答案:

答案 0 :(得分:2)

嗯,你的陈述是错误的。您错过了您引用的列。

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