Я получаю эту ошибку при попытке добавить ограничение внешнего ключа:
#1005 - Can't create table './testtable/#sql-595_146.frm' (errno: 150)
Мне нужно сделать ON DELETE CASCADE для всех изображений, которые имеют идентификатор проекта, когда этот проект удаляется. Моя упрощенная структура таблицы выглядит следующим образом:
CREATE TABLE IF NOT EXISTS `images` (
`image_id` mediumint(8) unsigned NOT NULL auto_increment,
`project_id` smallint(6) NOT NULL,
PRIMARY KEY (`image_id`),
KEY `project_id_ix` (`project_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=28 ;
CREATE TABLE IF NOT EXISTS `projects` (
`project_id` smallint(5) unsigned NOT NULL auto_increment,
PRIMARY KEY (`project_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
Теперь, когда я запускаю приведенный ниже запрос для добавления ограничения, запрос завершается с ошибкой, опубликованной выше. Может ли кто-нибудь помочь?
ALTER TABLE `images` ADD CONSTRAINT `project_id_fk` FOREIGN KEY (`project_id`) REFERENCES `projects` (`project_id`) ON DELETE CASCADE;
Спасибо за миллион!