मैं अपने सिस्टम के लिए डेटाबेस और टेबल बनाने की कोशिश कर रहा हूं। लेकिन मैंने पाया कि अगर मैं कोड में विदेशी कुंजी नहीं जोड़ता हूं। कोई त्रुटि नहीं है मैंने कोड बनाने के लिए कई तरीकों का प्रयास किया है, लेकिन इसमें अभी भी त्रुटि है।MySQL विदेशी कुंजी, तालिका नहीं बना सकता (errno: 150)
मैं MySQL 5.5.31, और यहाँ कोड का उपयोग कर रहा हूँ: डेटाबेस टीओएस बनाएं;
DROP TABLE TOS.USER CASCADE;
DROP TABLE TOS.BILL_HEADER CASCADE;
DROP TABLE TOS.TOY CASCADE;
CREATE TABLE TOS.USER
(User Char(8),
Name Char(10),
Type Char(1),
Password Char(12),
PRIMARY KEY(User));
CREATE TABLE TOS.BILL_HEADER
(Bill_No Char(10),
CTime DateTime,
No_Of INTEGER,
Cus_No Char(5),
DTime DateTime,
PRIMARY KEY(Bill_No));
CREATE TABLE TOS.TOY
(Toy_Id Char(10),
FullN Char(50),
ShortN Char(20),
Descrip Char(20),
Price DECIMAL,
Avail Char(1),
Cat Char(1),
PRIMARY KEY(Toy_Id));
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),
FOREIGN KEY(Toy_Id) REFERENCES TOS.TOY(Toy_Id));
त्रुटि:
1005 - Can't create table 'TOS.BILL_ITEM' (errno: 150)
किसी भी मदद की बहुत सराहना की जाएगी।
यदि मैं 'DROP' कथन हटा देता हूं तो यह काम करता प्रतीत होता है .. http://sqlfiddle.com/#!2/08d1e –
आमतौर पर, डेटा प्रकार और लम्बाई मेल नहीं होने के कारण 150 में एक विदेशी कुंजी त्रुटि होती है कॉलम और रिलेशनशिप या प्राथमिक कॉलम पर लापता इंडेक्स के बीच। आपके पास सभी सही प्रकार और पीके इंडेक्स परिभाषित किए गए हैं। –
क्या आप समस्या को कम करने के लिए केवल विदेशी कुंजी को हटाने का प्रयास कर सकते हैं? –