Nieopisowy błąd 150 jest zwykle związany z niezgodnością typu danych lub długości klucza obcego lub brakiem indeksu w kolumnie tabeli nadrzędnej.
Wygląda na to, że jest to kwestia rozróżniania wielkości liter w nazwie tabeli Bill_Header
(powinien być BILL_HEADER
).
Z dokumentacji MySQL na rozróżnianie wielkości liter w identyfikatorze:
Napraw obudowę i powinno działać:
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));
Ponieważ Twój kod działał tak, jak na SQLFiddle.com (http://sqlfiddle.com/#!2/ 08d1e ) na platformie bazowej nie może być rozróżniana wielkość liter.