両方のテーブルはInnoDBタイプですか?
companyテーブルにはcompany_idのインデックスがありますか?
テーブルはMyISAM(構成を変更していない場合のデフォルト)であり、MyISAMで外部キー制約を作成することはできないと思います。 2つのテーブルのCREATETABLEの説明を参照してください。
両方のテーブルが空の場合は、それらを削除して再作成し、エンジンとしてInnoDBを選択します。テーブル作成スクリプトにFOREIGNKEY制約を追加することもできます。
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;