Ошибка ограничения иностранного ключа
-
16-10-2019 - |
Вопрос
У меня есть два стола и стиль, т.е.
CREATE TABLE IF NOT EXISTS `ring` ( `jewelry_id` int(11) NOT NULL auto_increment, `ring_id` varchar(50) NOT NULL, `gender` varchar(10) NOT NULL, `description` text NOT NULL, `image` varchar(100) NOT NULL, `type` text NOT NULL, PRIMARY KEY (`jewelry_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
Стол Syle
CREATE TABLE IF NOT EXISTS `style` ( `style_id` int(11) NOT NULL AUTO_INCREMENT, `style` text NOT NULL, `jewelry_id` int(11) NOT NULL, PRIMARY KEY (`style_id`), KEY `jewelry_id` (`jewelry_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
Когда я добавляю иностранный ключ к таблице стилей, это дает мне ошибку, т.е.
ALTER TABLE `style` ADD CONSTRAINT `style_ibfk_1` FOREIGN KEY (`jewelry_id`) REFERENCES `ring` (`jewelry_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ошибка
#1005 - Can't create table './j_jewelry/#sql-2c3b_750.frm' (errno: 150) (Details...</a>)
Решение
Таблицы Myisam не поддерживают иностранные ключи. Сделайте оба таблица Innodb.
Другие советы
Для ссылки на внешний ключ должен быть тип таблицы INNODB
Не связан с StackOverflow