0

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

问题是一个常见的问题:我有两个表(锻炼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;
4

1 回答 1

2

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

ALTER TABLE exercise
ADD FOREIGN KEY(TYPEXERC_ID) references typexerc(typexerc_id);
于 2013-11-05T13:01:55.017 回答