sql >> データベース >  >> RDS >> Mysql

MySQL外部キー、テーブルを作成できません(errno:150)

    非記述エラー150は通常、外部キーのデータ型または長さの不一致、または親テーブルの列のインデックスの欠落に関連しています。

    これは、テーブル名Bill_Headerの大文字と小文字の区別の問題であるように見えます (BILL_HEADERである必要があります )。
    MySQLドキュメントから識別子の大文字と小文字の区別:

    ケースを修正すると、機能するはずです:

    CREATE TABLE TOS.BILL_ITEM
    (Bill_No Char(10),
    BSeq_No INTEGER,
    Toy_Id Char(10),
    OTime DateTime,
    Quan INT,
    DCondition Char(1),
    PRIMARY KEY(Bill_No,BSeq_No),
    FOREIGN KEY(Bill_No) REFERENCES TOS.BILL_HEADER(Bill_No),
    # Here-----------------------------^^^^^^^^^^^^^^
    FOREIGN KEY(Toy_Id) REFERENCES TOS.TOY(Toy_Id));
    

    コードはSQLFiddle.com( http://sqlfiddle.com/#!2/ 08d1e )基になるプラットフォームで大文字と小文字を区別してはなりません。



    1. EF6 MySql:Update-Database-ScriptはセミコロンなしでSQLを生成します

    2. $ this-> db-> insert_id(); codeigniterで毎回0を返す

    3. SQL Serverの名前からオブジェクトのIDを取得します:OBJECT_ID()

    4. 外部キーとして列を追加すると、外部キー制約で参照されているERROR列が存在しません