创建表时出现MySQL错误150

3

我有一张名为tbl_groupmaster的表,使用下面的SQL创建:

create table tbl_groupmaster (
  tgm_groupid int(10) unsigned NOT NULL auto_increment,
  tgm_groupname varchar(50),
  tgm_groupdescription varchar(50),
  PRIMARY KEY (tgm_groupid)
)

我正在创建一张名为tbl_groupmanager的表,使用外键关系:

create table tbl_groupmanager (
  tgmgr_groupmangerid int(10) NOT NULL,
  tgm_groupid int(10),
  UserNamesID int(10),
  tgmgr_groupsize int(10),
  tgmgr_groupassigned_date datetime,
  tgmgr_grouplead_status enum ('active','inactive'),
  PRIMARY KEY (tgmgr_groupmangerid),
  FOREIGN KEY (tgm_groupid) REFERENCES tbl_groupmaster(tgm_groupid)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

但是我遇到了这个错误:

SQL 错误:无法创建表 '.\student\tbl_groupmanager.frm'(errno: 150)。

这是什么意思?我无法确定我的错误。请帮我解决。提前感谢您的帮助。

3个回答

3

外键的类型必须与引用键相同。将tbl_groupmanager表上的tgm_groupid更改为int(10) unsigned,它就能正常工作。


0

很可能,您的数据库中默认引擎是MyISAM,因此tbl_groupmaster也是MyISAM

MyISAM不支持外键。


嗨, 我已经将它更改为InnoDB,然后才创建了...所以我确定没有问题。还有其他建议吗? - Senthil

0

您的外键数据类型与其引用的主键不同。一个是无符号的,而另一个则不是。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接