1

現在のテーブルをSQLのテーブルに挿入しようとすると、エラーが発生します(Productsテーブル)。

CREATE TABLE parent(

    Barcode     INT(9),
    PRIMARY KEY (Barcode)
) ENGINE=INNODB;

CREATE TABLE SuppliedBy(

    Onr         CHAR(10),
    OrgNR       INT(10),
    Date        DATE            NOT NULL,           
    PRIMARY KEY (Onr),
    FOREIGN KEY (OrgNR) REFERENCES Supplier(OrgNR)
                          ON DELETE CASCADE
                          ON UPDATE CASCADE
) ENGINE=INNODB;

CREATE TABLE Products(

    Onr     CHAR(10),
    Barcode     INT(9),
    Quantity    INT(10)         DEFAULT 0
                        CHECK (Quantity >= 0),
    PRIMARY KEY (Onr, Barcode),
    FOREIGN KEY (Onr) REFERENCES SuppliedBy(SSN)
                                ON DELETE CASCADE
                                ON UPDATE CASCADE,
    FOREIGN KEY (Barcode) REFERENCES parent(Barcode)
                                ON DELETE CASCADE
                                ON UPDATE CASCADE
)ENGINE=INNODB;

次のメッセージが表示されます。

#1005 - Can't create table '.\db_project\#sql-b58_6d.frm' (errno: 150)

この関係にあるいくつかの外部キーに関係していると確信しています。インターネットで検索しましたが、解決策が見つかりません。

4

2 に答える 2

2

列はありませんSuppliedBy.SSN

FOREIGN KEY (Onr) REFERENCES SuppliedBy(SSN)

おそらくあなたは意味しました

FOREIGN KEY (Onr) REFERENCES SuppliedBy(Onr)
                            ON DELETE CASCADE
                            ON UPDATE CASCADE,
于 2012-05-09T12:51:41.767 に答える
0

問題は、ポイントするFOREIGN KEYSを定義しているテーブルの1つに、ポイントしているインデックス外部キーフィールドがない可能性が高いと思います。

FOREIGN KEYが機能するには、ポイントしているフィールドにインデックスが必要です。

Mysqlを参照してください。テーブルerrno150を作成できません

また、キーを作成するためのすべての基準を満たしていることを確認してください。両方のテーブルの列は次の条件を満たしている必要があります。

  • 同じデータ型である
  • 同じサイズまたは長さである
  • インデックスを定義します。
于 2012-05-09T12:50:07.833 に答える