私はMySqlでデータベースを作成していますが、多くの関連テーブルに関連する外部キー制約を設定しようとするといくつかの問題があります。多対多関連テーブルに2つの外部キーを設定しようとすると、なぜこのエラーメッセージが表示されますか? "外部キーの制約が正しく形成されていません"
1)宿泊:
だから基本的に私は、これらの2つのテーブルを持っている各レコードは、ホテルを表すと、次のフィールドがあります。
Field Type Null Key Default Extra
---------------------------------------------------------------------------------------------------------------------------
id bigint(20) unsigned NO PRI auto_increment
user_id bigint(20) unsigned NO
accomodation_name varchar(100) NO
description text YES
nation varchar(100) YES
region varchar(100) YES
province varchar(100) YES
city varchar(100) YES
stars int(10) unsigned YES
geographical_position point YES
accomodation_typological_id bigint(20) unsigned YES MUL
accomodation_service_id bigint(20) YES
2)サービス各レコードが表します前の表のホテルが提供するシングルサービス:
Field Type Null Key Default Extra
---------------------------------------------------------------------------------------------------------------------------
id bigint(20) NO PRI auto_increment
description varchar(255) NO
[OK]を、私は前の2つのテーブル間には多くの関係多くを実装accomodation_serviceという名前の対応表を持っている、これは、その構造である:だから
Field Type Null Key Default Extra
---------------------------------------------------------------------------------------------------------------------------
id bigint(20) unsigned NO PRI auto_increment
accomodation_id bigint(20) unsigned NO MUL
service_id bigint(20) unsigned NO
、あなたが見ることができるように、このaccomodation_serviceテーブルはの客室のテーブルとサービステーブルのレコードを関連付けます。
私の問題は、このテーブルにというの外部キーを設定しようとしています。 をが宿泊テーブルのみID値を含有しなければならないとのservice_idがサービステーブルのみID値を含有しなければならない。accomodation_id特定で
だから私はこのように、データベースWorkBanch 5(私のIDE)が提供するグラフィカルなツールを使用してそれを行うにはtryiedています
私がしようとするので、私はいくつかのdificultieを見つけていますこの制約設定を実行するには、IDEから次のエラーメッセージが表示されます。
#HY000Can't create table `testdb`.`#sql-417c_4b` (errno: 150 "Foreign key constraint is incorrectly formed")
while executing:
ALTER TABLE accomodation_service ADD CONSTRAINT fk_accomodation_service_service FOREIGN KEY (service_id)
REFERENCES service (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
なぜですか? IDEの問題ですか、何か不足していますか?この問題を解決するために何をすることができますか?これら2つのforeingキーを正しく設定するには、どのようなクエリを実行する必要がありますか?