Добрый день. Есть таблица бренды(brand) и товары(item). В товарах есть колонка brand, которым я хочу сделать внешний ключ на brand.id. Но поле item.brand может и быть null. В таблице уже есть записи. Там где нет связей brand=null.
ALTER TABLE `item` ADD FOREIGN KEY ( `brand` ) REFERENCES `imstor`.`brand` (
`id`
) ON DELETE RESTRICT ON UPDATE RESTRICT ;
Ответ MySQL: Документация
#1215 - Cannot add foreign key constraint
CREATE TABLE IF NOT EXISTS `brand` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`category` int(10) NOT NULL,
`url` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `category_id` (`category`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;
-- --------------------------------------------------------
--
-- Структура таблицы `item`
--
CREATE TABLE IF NOT EXISTS `item` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`category` int(10) NOT NULL,
`url` varchar(255) NOT NULL,
`brand` int(10) DEFAULT NULL,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `category_id` (`category`),
KEY `brand` (`brand`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=420 ;
ALTER TABLE `brand`
ADD CONSTRAINT `brand_ibfk_1` FOREIGN KEY (`category`) REFERENCES `category` (`id`);
ALTER TABLE `item`
ADD CONSTRAINT `item_ibfk_1` FOREIGN KEY (`category`) REFERENCES `category` (`id`);