Bermuda
Новичок
InnoDB. Не удается создать FOREIGN KEY
Есть две таблицы
[SQL]
SHOW CREATE TABLE tbl_master;
CREATE TABLE `tbl_master` (
`id` int(11) unsigned NOT NULL,
`data` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB;
[/SQL]
[SQL]
SHOW CREATE TABLE tbl_slave;
CREATE TABLE `tbl_slave` (
`rel_id` int(11) unsigned NOT NULL,
`data` varchar(20) DEFAULT NULL,
PRIMARY KEY (`rel_id`)
) ENGINE=InnoDB;
[/SQL]
Делаю следующий запрос
[SQL]
ALTER TABLE `tbl_slave`
ADD CONSTRAINT `tbl_slave_fk`
FOREIGN KEY (`rel_id`)
REFERENCES `tbl_master` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION;
[/SQL]
После чего снова проверяю SHOW CREATE TABLE. FOREIGN KEY не создается.
Что я делаю не так?
SHOW INNODB STATUS никаких ошибок не рапортует.
ОС: WinXP SP2
MySQL: 5.1.9-beta
Только что проверил на другой машине. Получил ожидаемый результат -- FOREIGN KEY создался.
ОС: Linux *
MySQL: 4.1.15-max
В чем может быть дело?
Все. Всем спасибо, разобрался.
А дело было вот в чем
Если у кого-нибудь будет похожая проблема, то решение здесь
В правильно сформулированном вопросе 80% ответа
Есть две таблицы
[SQL]
SHOW CREATE TABLE tbl_master;
CREATE TABLE `tbl_master` (
`id` int(11) unsigned NOT NULL,
`data` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB;
[/SQL]
[SQL]
SHOW CREATE TABLE tbl_slave;
CREATE TABLE `tbl_slave` (
`rel_id` int(11) unsigned NOT NULL,
`data` varchar(20) DEFAULT NULL,
PRIMARY KEY (`rel_id`)
) ENGINE=InnoDB;
[/SQL]
Делаю следующий запрос
[SQL]
ALTER TABLE `tbl_slave`
ADD CONSTRAINT `tbl_slave_fk`
FOREIGN KEY (`rel_id`)
REFERENCES `tbl_master` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION;
[/SQL]
После чего снова проверяю SHOW CREATE TABLE. FOREIGN KEY не создается.
Что я делаю не так?
SHOW INNODB STATUS никаких ошибок не рапортует.
ОС: WinXP SP2
MySQL: 5.1.9-beta
Только что проверил на другой машине. Получил ожидаемый результат -- FOREIGN KEY создался.
ОС: Linux *
MySQL: 4.1.15-max
В чем может быть дело?
Все. Всем спасибо, разобрался.
А дело было вот в чем
Если у кого-нибудь будет похожая проблема, то решение здесь
В правильно сформулированном вопросе 80% ответа
