1

mEmpl と mOrder という 2 つのテーブルがあります。

mEmpl には 9 つのフィールドがあります。

IDEmployee (int)、ShortName (varchar)、Name (varchar)、DBegin (datetime 主キー)、DEnd (datetime 主キー)、Directory (varchar)、Mode (varchar 主キー)、PartTime (varchar)、IDJob (int)

mOrder には 11 のフィールドがあります。

IDOrder (int)、NrOrder (int)、OrderDesc (varchar)、IDOwner (int)、Budget (float)、DBegin (datetime)、DEnd (datetime)、Mode (varchar)、ArtCost (int)、BaseRate (int)、 BaseItem (int)

mOrder(DBegin, DEnd, and Mode)mEmpl を参照する外部キーを追加しようとすると、常にエラー メッセージが表示されます。

ERROR 1005 (HY000): Can't create table 'spezet.#sql-4d4_1' (errno: 150)

ただし、次のように DBegin に外部キーを追加するだけの場合:

ALTER TABLE mOrder ADD FOREIGN KEY (DBegin) REFERENCES mEmpl(DBegin);

エラーは発生していません。DBegin は、mEmpl.DBegin プライマリ キーを正常にポイントしています。

ここで何が問題なのか、または MySQL が実際に一度に 2 つの日時フィールドを指すことができないのかどうかを誰かが説明できますか? お返事ありがとうございます。

4

1 に答える 1

2

ルートとしてMySQLにログインし、次のように入力すると、問題の原因の詳細を確認できます。-

SHOW ENGINE INNODB STATUS;

これは役立つかもしれません。問題の原因は、外部キーを作成するときに、外部キー制約で指定された順序で、インデックスの最初の列として参照列を含む参照テーブルのインデックスが必要なことだと思います。

詳細については、こちらをご覧ください。

于 2012-07-19T11:34:28.190 に答える