我正在尝试使用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$$
答案 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。