質問

エラーは次のとおりです。テーブル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
);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top