Создание таблицы MySQL с двумя внешними ключами в таблице перекрестных ссылок

Это, вероятно, происходит от нехватки знаний или банальной глупости, но я хотел бы понять, как создавать внешние ключи в таблице перекрестных ссылок:

Например, У меня есть две таблицы, элемент и изображение

CREATE TABLE `item` (
    `id` INT(11) UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    `name` VARCHAR(30) NOT NULL,
    `description` MEDIUMTEXT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `image` (
    `id` INT(11) UNSIGNED AUTO_INCREMENT,
    `file` VARCHAR(255) UNIQUE NOT NULL,
    `caption` VARCHAR(255),
    PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Я хочу сослаться на любое изображение на любой элемент, поэтому я создаю таблицу перекрестных ссылок следующим образом:

CREATE TABLE `item_image` (
    `item` INT(11) UNSIGNED NOT NULL,#foreign key
    `img` INT(11) UNSIGNED NOT NULL,#foreign key
    PRIMARY KEY(`item`,`img`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Но таблица item_image содержит столбцы, которые являются внешними ключами, поэтому я пытаюсь ограничивайте их вот так

CREATE TABLE `item_image` (
    `item` INT(11) UNSIGNED NOT NULL,
    `img` INT(11) UNSIGNED NOT NULL,
    PRIMARY KEY(`item`,`img`),
    FOREIGN KEY(`item`)
        REFERENCES `item` (`id`) 
        ON DELETE CASCADE,
    FOREIGN KEY(`img`)
        REFERENCES `image` (`id`) 
        ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Так что, если изображение или элемент будут удалены, база данных также удалит перекрестную ссылку.

Я прочитал много ресурсов в Интернете и stackoverflow, и мне часто говорят, что не должно быть проблем с выполнением того, что я хочу. Определение нескольких внешних ключей в одной таблице для многих таблиц

, но MySQL выдает эту общую ошибку

Код ошибки: 1005. Не удается создать таблицу 'test.item_image' (номер ошибки: 150)

I нужна помощь, чтобы понять, на что именно жалуется MySQL.

Изменить:

Я выполняю запросы в MySQL Workbench 5.2.39 CE, если это имеет значение...

Версия MySQL: 5.5.16

5
задан Community 23 May 2017 в 12:11
поделиться