0

私のテーブル定義:

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)

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

4

5 に答える 5

4

多分これが理由です

削除されたテーブルを再作成する場合は、それを参照する外部キー制約に準拠する定義が必要です。前述のように、正しい列名と型が必要であり、参照されるキーにインデックスが必要です。これらが満たされていない場合、MySQL はエラー番号 1005 を返し、エラー メッセージでエラー 150 を参照します。

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

于 2009-06-16T20:09:20.623 に答える
3

エラー メッセージ (perror 150) を取得するには、「errno」エラー番号を指定してperrorを使用します。

MySQL エラー コード 150: 外部キー制約の形式が正しくありません

于 2009-06-16T20:08:46.723 に答える
1

これは、外部キー名が重複している場合にも発生します。

たとえば、長い名前を持つ 2 つの非常によく似たテーブルがあるとします。時間を「節約」するには、最初のテーブルの CREATE から外部キー名をコピー アンド ペーストします。それらはたまたま別のテーブルへの外部キーを共有しているため、1 つ以上の同一の外部キー名が生成されます。

モニターに頭をぶつけても、LCD では満足できないことに気付きましたか?

于 2009-11-26T06:07:07.523 に答える
1

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

于 2016-03-23T10:54:01.870 に答える
1

おそらくその a.id は存在しません。

于 2009-06-16T20:07:59.097 に答える