Не удалось добавить внешний ключ в MySQL - PullRequest
0 голосов
/ 13 декабря 2011

Я пытаюсь добавить внешний ключ, используя 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 ]

3 голосов
/ 13 декабря 2011

Хотя оба столбца имеют тип 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$$
0 голосов
/ 13 декабря 2011

Внешний ключ должен быть того же типа, что и указанный столбец.Вам нужно сделать t_id без знака на таблице с внешним ключом.

...