क्या दोनों टेबल InnoDB टाइप हैं?
क्या कंपनी तालिका में company_id पर एक अनुक्रमणिका है?
मुझे लगता है कि आपकी तालिका MyISAM है (यदि आपने कॉन्फ़िगरेशन नहीं बदला है तो डिफ़ॉल्ट) और आप MyISAM में विदेशी कुंजी बाधाएँ नहीं बना सकते। दो टेबल के लिए CREATE TABLE का विवरण देखें।
यदि दोनों टेबल खाली हैं, तो उन्हें छोड़ दें और उन्हें फिर से बनाएं, InnoDB को इंजन के रूप में चुनें। आप टेबल निर्माण स्क्रिप्ट में विदेशी कुंजी बाधाओं को भी जोड़ सकते हैं।
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;