Mysql
 sql >> Base de données >  >> RDS >> Mysql

Clé étrangère MySQL, Impossible de créer la table (errno :150)

L'erreur non descriptive 150 est généralement liée à des incompatibilités de type de données ou de longueur de clé étrangère, ou à un index manquant sur la colonne de la table parent.

Cela semble être une question de sensibilité à la casse dans le nom de la table Bill_Header (devrait être BILL_HEADER ).
De la documentation MySQL sur sensibilité à la casse de l'identifiant :

Corrigez le problème et cela devrait fonctionner :

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));

Étant donné que votre code a fonctionné tel quel sur SQLFiddle.com (http://sqlfiddle.com/#!2/ 08d1e ) la plate-forme sous-jacente ne doit pas être sensible à la casse.