エラーは次のとおりです。テーブルc.handsetsを作成できません
問題を見つけるにはどうすればよいですか?
データベースを作成しましたが、他のテーブルがデータベースに作成されていることがわかりましたが、このエラーが発生するのは1つだけです。
エラーは次のとおりです。テーブルc.handsetsを作成できません
問題を見つけるにはどうすればよいですか?
データベースを作成しましたが、他のテーブルがデータベースに作成されていることがわかりましたが、このエラーが発生するのは1つだけです。
外部キーに対して満たさなければならない条件があります。
両方のテーブルで InnoDB ストレージ エンジンを使用する必要があります。
データ型は両方のテーブルで同一でなければなりません。たとえば、VARCHAR(250) は VARCHAR(255) と同じではありません。
親テーブルの列には PRIMARY KEY または UNIQUE 制約が必要です。
外部キーは、親テーブルの PRIMARY KEY または UNIQUE 制約の列と同じ列を同じ順序で宣言する必要があります。これが最も可能性の高い問題です。
たとえば、これが親テーブルの場合:
CREATE TABLE PhoneModels (
make VARCHAR(255),
model VARCHAR(255),
PRIMARY KEY (make, model)
);
主キーには 2 つの列がありますが、各外部キーには 1 つの列があるため、次は正しくありません。
CREATE TABLE Handsets
(
...
make VARCHAR(255),
model VARCHAR(255),
FOREIGN KEY (make) REFERENCES PhoneModels(make), // WRONG
FOREIGN KEY (model) REFERENCES PhoneModels(model) // WRONG
);
このようには機能しません。両方の列を参照する 1 つの外部キーが必要です。
CREATE TABLE Handsets
(
...
make VARCHAR(255),
model VARCHAR(255),
FOREIGN KEY (make, model) REFERENCES PhoneModels(make, model), // RIGHT
);