2015-03-13 105 views
0

有人能说明一下原因以下错误,“无法创建表‘活动’(错误:150)”什么是MySQL的原因:Errorno 150

我是understading的下数据类型和长度必须相同,是否与自动增量有关?

Create Table `LinkMemberActivity` (

`LinkID` int(11) unsigned NOT NULL AUTO_INCREMENT, 

`MID` int(11) unsigned NOT NULL, 

`AID` int(11) unsigned NOT NULL, 

PRIMARY KEY (`LinkID`), 
FOREIGN KEY (`MID`) REFERENCES Members(`MID`)) ENGINE=InnoDB DEFAULT CHARSET=latin1; 
            ) 
CREATE TABLE `Activities` (

`AID` int(11) unsigned NOT NULL AUTO_INCREMENT, 

`Name` varchar(25) DEFAULT NULL, 

`MaxCapacity` int(25) DEFAULT NULL, 

`StartTime` time DEFAULT NULL, 

`EndTime` time DEFAULT NULL, 

PRIMARY KEY (`AID`), 
FOREIGN KEY (`AID`) REFERENCES LinkMemberActivity(`AID`)) 
ENGINE=InnoDB DEFAULT CHARSET=latin1); 
+0

引用的列必须是主键或唯一键,这一个LinkMemberActivity('AID') – Mihai 2015-03-13 18:03:03

+0

您的外键引用是一个未编制索引的列。 – 2015-03-13 18:03:39

+0

有可能解释一下吗? @GordonLinoff – 2015-03-13 18:16:30

回答

0

您试图使主键列成为外键相关字段。这不仅不寻常,而且在数据模型中没有意义,除非它是组合键的一部分。通常的做法有一个列外键依赖于另一个表主键。不知道你以这种方式设计数据模型的方式有什么原因,但可以通过创建一个名为ID的非空自动增量列并将此列作为主键来解决此问题。接下来从帮助中删除自动增量。