И двете таблици тип InnoDB ли са?
Фирмената таблица има ли индекс на company_id?
Предполагам, че вашата таблица е MyISAM (по подразбиране, ако не сте променили конфигурацията) и не можете да създавате ограничения за външни ключове в MyISAM. Вижте описанието на CREATE TABLE за вашите две маси.
Ако и двете таблици са празни, пуснете ги и ги създайте отново, като изберете InnoDB като машина. Можете също да добавите ограниченията FOREIGN KEY в скрипта(ите) за създаване на таблици.
От MySQL Справочно ръководство :
@egervari:Какво се случва, ако стартирате това:
CREATE TABLE `test` (
`company_id` bigint(20) NOT NULL,
`module_id` bigint(20) NOT NULL,
KEY (`module_id`),
KEY (`company_id`),
CONSTRAINT `test_fk_module`
FOREIGN KEY (`module_id`)
REFERENCES `module` (`module_id`),
CONSTRAINT `test_fk_company`
FOREIGN KEY (`company_id`)
REFERENCES `company` (`company_id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
И ако стартирате:
ALTER TABLE `company_to_module`
ADD CONSTRAINT `company_to_module_fk_company`
FOREIGN KEY (`company_id`)
REFERENCES `company` (`company_id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT;