Zijn beide tabellen van het type InnoDB?
Heeft de bedrijfstabel een index op company_id ?
Ik vermoed dat uw tabel MyISAM is (de standaardinstelling als u de configuratie niet hebt gewijzigd) en dat u geen beperkingen voor externe sleutels kunt maken in MyISAM. Zie de beschrijving van de CREATE TABLE voor je twee tafels.
Als beide tabellen leeg zijn, laat u ze vallen en maakt u ze opnieuw aan, waarbij u InnoDB als engine kiest. U kunt ook de FOREIGN KEY-beperkingen toevoegen aan de script(s) voor het maken van tabellen.
Van MySQL Referentiehandleiding :
@egervari:Wat gebeurt er als je dit uitvoert:
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 ;
En als je rent:
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;