Är båda tabellerna InnoDB-typ?
Har företagstabellen ett index på company_id ?
Jag antar att din tabell är MyISAM (standard om du inte har ändrat konfigurationen) och du kan inte skapa begränsningar för främmande nyckel i MyISAM. Se beskrivningen av CREATE TABLE för dina två bord.
Om båda tabellerna är tomma, släpp dem och återskapa dem, välj InnoDB som motor. Du kan också lägga till FOREIGN KEY-begränsningarna i skripten för att skapa tabeller.
Från MySQL Referensmanual :
@egervari:Vad händer om du kör detta:
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 ;
Och om du kör:
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;