Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Вторичный ключ MySQL


Автор: SnowyWhite 2.11.2013, 21:54
есть две таблицы:
Код

CREATE TABLE `Transportation` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `from` int(11) DEFAULT NULL,
  `to` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `from` (`from`),
  KEY `to` (`to`),
  CONSTRAINT `transportation_ibfk_2` FOREIGN KEY (`to`) REFERENCES `Issuing office` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `transportation_ibfk_1` FOREIGN KEY (`from`) REFERENCES `Issuing office` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Код

CREATE TABLE `CurrentTransportetion` (
  `ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `transportation` int(11) NOT NULL,
  `car` int(11) NOT NULL,
  PRIMARY KEY (`ID`),
  KEY `car` (`car`),
  CONSTRAINT `currenttransportetion_ibfk_1` FOREIGN KEY (`car`) REFERENCES `Transport` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

пытаюсь создать вторичный ключ:
Код

ALTER TABLE `CurrentTransportetion`
ADD FOREIGN KEY (`transportation`)
REFERENCES `Transportation`(`id`);

получаю ошибку:
Can't create table 'fedex corporation.#sql-124_29' (errno: 150)

что не так делаю?
на других таблицах все связи нормально создались.
заранее спасибо

Автор: NetJunky 3.11.2013, 05:23
Для начала, не достаточно информации. Где таблицы на которые происходит ссылка в внешних ключах? Также, что сразу бросается в глаза, так это то что, в последнем запросе попытка установить внешний ключ, где описания полей не совпадают.

Код

ALTER TABLE `CurrentTransportetion`ADD FOREIGN KEY (`transportation`)REFERENCES `Transportation`(`id`);


Код

CREATE TABLE `Transportation` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,


Код

CREATE TABLE `CurrentTransportetion` (  `ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `transportation` int(11) NOT NULL,


Кто будет указывать, что поле `transportation` должно быть unsigned?

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Вторичный-ключ-MySQL-id52754affae2015d016000000#findElement_E7045_5275b396ae2015464f0003ca_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)