@kENNY_x7

Ошибка: 150 «Foreign key constraint is incorrectly formed» при создании новой таблицы?

Пытаюсь выполнить запрос в mysql и получаю ошибку: #1005 - Невозможно создать таблицу (ошибка: 150 "Foreign key constraint is incorrectly formed")
Хотя вроде в запросе не вижу ошибки, подскажите в чем проблема

-- -----------------------------------------------------
-- Table `server_ads`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `server_ads` (
  `srv_id` INT UNSIGNED NOT NULL,
  `adv_id` INT UNSIGNED NOT NULL,
  PRIMARY KEY (`srv_id`, `adv_id`),
  INDEX `server_ads_adv_id_idx` (`adv_id` ASC),
  CONSTRAINT `server_ads_srv_id`
    FOREIGN KEY (`srv_id`)
    REFERENCES `servers` (`srv_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `server_ads_adv_id`
    FOREIGN KEY (`adv_id`)
    REFERENCES `advert` (`adv_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;
  • Вопрос задан
  • 16215 просмотров
Решения вопроса 1
@immelnikoff
Изучаю БД
В рамках одной БД все CONSTRAINT'ы должны иметь уникальные имена. Возможно проблема в этом.
Другой вариант -- несовпадение доменов (типа и ограничений) поля внешнего ключа с полем, на которое он ссылается.
Третий вариант -- ссылочные поля должны быть потенциальными ключами.
Четвертый вариант -- родительских таблиц не существует.
Пятый -- подсистема хранения родительских таблиц MyISAM.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Это дебильное сообщение об ошибке, но если выполнить команду SHOW ENGINE INNODB STATUS, то там, под заголовком LATEST FOREIGN KEY ERROR будет нормальное объяснение, что конкретно не так.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы