3

テーブルに外部キーを追加しようとしていますが、このエラーが発生します。エラー コード: 1005 テーブル 'william.#sql-88c_3' を作成できません (エラー番号: 150) 3 つのテーブルがあります。従業員、クライアント、および契約。

employee [employee_no PK] , Client[customer_no PK] contract [contract_no PK] コントラクト用の外部キーが必要です [contract_no PK, employee_no FK], customer_no FK]

直接実行しようとしましたが失敗しました。現在、alter ステートメントを試しています。Alter スクリプトに何か問題がありますか?

    ALTER TABLE contract
    ADD CONSTRAINT `employee_no_fk2` FOREIGN KEY (`employee_no`) REFERENCES `employee` 
    (`employee_no`);


   ALTER TABLE contract
    ADD CONSTRAINT `Customer_no_fk2` FOREIGN KEY (`Customer_no`) REFERENCES `client` 
    (`Customer_no`);
4

4 に答える 4

10

そのようなエラーのほとんどは、データ型の不一致などに関連しています..これらのリンクをたどることができれば..それはあなたが推測するのに役立つかもしれません..これを確認してください...これ確認してください

彼らが2番目のリンクで言うように:

最初に確認する必要があるのは、外部キー列と主キー列の間でデータ型が一致しているかどうかです。

mysql> SHOW engine innodb STATUS;

------------------------
LATEST FOREIGN KEY ERROR
------------------------
100130 17:16:57 Error IN FOREIGN KEY CONSTRAINT OF TABLE sampledb/#sql-4a0_2:
FOREIGN KEY(member_type)
REFERENCES common_lookup(common_lookup_id):
Cannot find an INDEX IN the referenced TABLE WHERE the
referenced COLUMNS appear AS the FIRST COLUMNS, OR COLUMN types
IN the TABLE AND the referenced TABLE do NOT MATCH FOR CONSTRAINT.
于 2010-09-17T00:04:37.763 に答える
2

参照しようとしているキーフィールドの1つにインデックスがないか、主キーではないことを確認してください。また、2つのキーフィールドのタイプやサイズが完全に一致している必要があります。また、両方のテーブルがInnoDBテーブルであることを確認してください。

于 2013-01-08T13:16:17.537 に答える
1

これは 2 つの理由で発生する可能性があります

  1. 外部キー制約が正しく形成されていなかったか、または
  2. 制約のデータ型が一致しません。

以下のリンクが参考になります

http://dev.mysql.com/doc/refman/5.0/en/innodb-error-codes.html

于 2013-08-05T06:51:33.393 に答える
0

前回これに遭遇したのは制約でした。参照テーブルのキーの型は「int」であり、参照テーブルには、int ではなく誤って参照フィールドが「unsigned int」でした。

于 2014-01-25T04:19:26.633 に答える