2009-06-16 5 views
0

私のテーブル定義を作成します。次のエラー生成MySQLエラー1005は

CREATE TABLE x (
    a INT NOT NULL, 
    FOREIGN KEY (a) REFERENCES a (id) ON UPDATE CASCADE ON DELETE CASCADE 
) ENGINE = InnoDB; 

ERROR 1005 (HY000): Can't create table './abc/x.frm' (errno: 150) 

は、これは何を意味するのでしょうか?

+0

テーブル 'a'は既に存在しますか? –

答えて

1

おそらくa.idは存在しません。 (150 perrorは)エラーメッセージを取得するには、 "エラー番号" エラー番号と

+0

ちょっと分かりました。テーブルaはまだ作成されていません... –

3

使用perror

MySQL error code 150: Foreign key constraint is incorrectly formed

4

多分これはなぜ

If you re-create a table that was dropped, it must have a definition that conforms to the foreign key constraints referencing it. It must have the right column names and types, and it must have indexes on the referenced keys, as stated earlier. If these are not satisfied, MySQL returns error number 1005 and refers to error 150 in the error message.

ですから:http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

1

もこの重複する外部キー名がある場合に発生します。

たとえば、長い名前の2つの非常に似たテーブルがあるとします。時間を「節約」するには、最初のテーブルのCREATEから外部キー名をコピーして貼り付けてから気を取られ、異なるテーブル名の部分を更新できません。彼らは、別のテーブルに外部キーを共有し、その結果、1つ以上の同一の外部キー名が発生します。

あなたは頭をモニターに打ちつけることがLCDで満足できるものではないことに気付きましたか?

0

このエラーは、参照されるテーブルがInnoDBストレージフォーマットを使用しない場合にもスローされます。

関連する問題