Добрый день. Пытаюсь создать таблицы в базе данных, но после добавления в код внешних ключей, создание на одной из таблиц прерывается. Без внешних ключей все работало. Типы полей вроде бы везде одинаковые. Код:
CREATE TABLE menu(
id int(10) UNSIGNED NOT NULL auto_increment,
parent_id int(10) UNSIGNED default NULL,
name varchar(100) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE dishes(
id int(10) UNSIGNED NOT NULL auto_increment,
menu_id int(10) UNSIGNED NOT NULL,
name varchar(100) NOT NULL,
title varchar(255) NOT NULL,
price int(10) UNSIGNED NOT NULL,
recommendation int(1) UNSIGNED NOT NULL default 0,
PRIMARY KEY (id),
FOREIGN KEY (menu_id) REFERENCES menu(id)
ON UPDATE CASCADE
ON DELETE CASCADE
);
CREATE TABLE composition(
id int(10) UNSIGNED NOT NULL auto_increment,
dishes_id int(10) UNSIGNED NOT NULL,
product_id int(10) UNSIGNED NOT NULL,
weight int(10) UNSIGNED NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (dishes_id) REFERENCES dishes(id)
ON UPDATE CASCADE
ON DELETE CASCADE,
FOREIGN KEY (product_id) REFERENCES products(id)
ON UPDATE CASCADE
ON DELETE CASCADE
);
CREATE TABLE images(
id int(10) UNSIGNED NOT NULL auto_increment,
dishes_id int(10) UNSIGNED NOT NULL,
title varchar(255) NOT NULL,
extension varchar(10) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (dishes_id) REFERENCES dishes(id)
ON UPDATE CASCADE
ON DELETE CASCADE
);
CREATE TABLE products(
id int(10) UNSIGNED NOT NULL auto_increment,
name varchar(255) NOT NULL,
calories int(10) UNSIGNED NOT NULL,
PRIMARY KEY (id)
);
На таблице composition выдает ошибку:
Can't create table 'composition' (errno: 150)
.
Подскажите, в чем проблема?
Дополнительный вопрос: правила удаления/обновления по внешнему ключу для сайта-каталога/интернет-магазина какие лучше задавать?