无法在mysql中添加外键

时间:2011-12-13 19:04:53

标签: mysql mysql-workbench

我正在尝试使用MySQL Workbench添加外键。我创建了一个新表并单击了外键选项卡,它显示了列。但该复选框未激活。该列是两个表上的INT数据类型。你能否提出一些可能出错的建议?我感谢任何帮助。

CREATE TABLE `temp_table1` (
  `t_id` int(10) unsigned NOT NULL,
  `t_name` varchar(45) default NULL,
  PRIMARY KEY  (`t_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$


CREATE TABLE `new_table` (
  `newid` int(11) NOT NULL,
  `t_id` int(10) NOT NULL,
  PRIMARY KEY  (`newid`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$

2 个答案:

答案 0 :(得分:3)

虽然两列都属于INT类型,但其中一列也是unsigned。它们必须都是unsigned才能建立外键。

CREATE TABLE `temp_table1` (
  `t_id` int(10) unsigned NOT NULL,
  `t_name` varchar(45) default NULL,
  PRIMARY KEY  (`t_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$


CREATE TABLE `new_table` (
  `newid` int(11) NOT NULL,
  `t_id` int(10) unsigned NOT NULL,
  --------------^^^^^^^^^^
  -- Must be unsigned...
  PRIMARY KEY  (`newid`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$

答案 1 :(得分:0)

外键需要与引用列的类型相同。您需要使用外键在表上使用t_id unsigned。