-1

このステートメントが機能しないのはなぜですか?

CREATE TABLE capacidad (
  cod_capacidad INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  cod_area INTEGER UNSIGNED NOT NULL,
  capacidad VARCHAR(100) NOT NULL,
 PRIMARY KEY(cod_capacidad),
 INDEX capacidad_FKIndex1(cod_area),
 FOREIGN KEY(cod_area)
   REFERENCES AREA(cod_area)
     ON DELETE NO ACTION
     ON UPDATE NO ACTION
   )
 ENGINE=INNODB;
4

2 に答える 2

2

エラー 150 が発生しないようにするには、次の点を確認する必要があります。

  1. 2 つのテーブルはENGINE=InnoDBでなければなりません。
  2. 2 つのテーブルの文字セットは同じでなければなりません。
  3. 親テーブルの PK 列と FK 列は同じデータ型である必要があります。
  4. 親テーブルの PK 列と FK 列は、照合タイプが定義されている場合、照合タイプが同じである必要があります。
  5. 外部キー テーブルに既にデータがある場合、FK 列の値は、親テーブルの PK 列の値と一致する必要があります。

お役に立てれば。

ps:他のテーブルも共有する必要があります。

于 2013-01-09T19:40:57.777 に答える
-1

CREATE INDEX構文CREATE TABLEを使用して、ステートメントの外側にインデックスを作成してみてください。

編集:私のせいです、私はmssqlについて考えました。

PS。このステートメントは私のDBで機能します。

于 2013-01-09T19:24:00.067 に答える