テーブルを作成するエラー-mysql
-
29-09-2019 - |
質問
エラーは次のとおりです。テーブルC.handsetsを作成できません
どうすれば問題を見つけることができますか?
データベースを作成しましたが、他のテーブルが作成されていることがわかりましたが、このエラーが発生しているのは1つだけです。
解決
外部キーに満足しなければならない条件があります。
両方のテーブルでINNODBストレージエンジンを使用する必要があります。
データ型はそうでなければなりません 同一 両方のテーブルで。たとえば、Varchar(250)はVarchar(255)と同一ではありません。
親テーブルの列には、主要なキーまたは一意の制約が必要です。
外部キーは、同じ列を同じ順序で宣言する必要があります。これはあなたの最も可能性の高い問題です。
たとえば、これがあなたの親のテーブルの場合:
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
);
所属していません StackOverflow