Возникла проблема с определением внешнего ключа между двумя таблицами в MySQL - PullRequest
0 голосов
/ 24 января 2019

Код ошибки: 1215. Невозможно добавить ограничение внешнего ключа

Я не уверен, когда я получаю эту проблему, вот две таблицы, о которых идет речь, любая помощь будет принята с благодарностью!

CREATE TABLE IF NOT EXISTS `PHL_db`.`Session` (
  `year` INT NOT NULL,
  `season` VARCHAR(50) NOT NULL,
  `division` VARCHAR(25) NOT NULL,
  PRIMARY KEY (`year`, `season`, `division`))
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `PHL_db`.`Team` (
  `name` VARCHAR(100) NOT NULL DEFAULT 'Free Agent',
  `Session_season` VARCHAR(50) NOT NULL,
  `Session_year` INT NOT NULL,
  `Session_division` VARCHAR(25) NOT NULL,
  PRIMARY KEY (`name`, `Session_season`, `Session_year`, `Session_division`),
    FOREIGN KEY (`Session_season` , `Session_year` , `Session_division`)
    REFERENCES `PHL_db`.`Session` ( `year`, `season` , `division`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

Ответы [ 2 ]

0 голосов
/ 24 января 2019
FOREIGN KEY (`Session_season` , `Session_year` , `Session_division`)
REFERENCES `PHL_db`.`Session` ( `year`, `season` , `division`)

Должно быть

FOREIGN KEY (`Session_year`, `Session_season` , `Session_division`)
REFERENCES `PHL_db`.`Session` ( `year`, `season` , `division`)

Столбцы внешнего ключа должны соответствовать столбцам ссылочного первичного ключа.Они должны быть одинаковыми:

  • Количество столбцов
  • Порядок столбцов (это тот, который вы ошиблись)
  • Типы данных

Возможно, вы также захотите прочитать этот контрольный список по вопросам, связанным с внешними ключами, в которые я помог внести: MySQL Создание таблиц с внешними ключами с ошибкой: 150

0 голосов
/ 24 января 2019

вы пытаетесь сделать первичные ключи внешними ключами, в которых первичные ключи нельзя использовать в качестве внешних ключей для одной и той же таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...