Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

MySQL त्रुटि 1452 - जोड़ या चाइल्ड पंक्ति नहीं कर सकता:एक विदेशी कुंजी बाधा विफल हो जाती है

<घंटा/>

त्रुटि 1452 को समझने के लिए, पहले हमें एक तालिका बनानी होगी और एक विदेशी कुंजी बाधा की मदद से उसे दूसरी तालिका से जोड़ना होगा।

पहली तालिका बनाना -

mysql> क्रिएट टेबल फॉरेनटेबल-> (-> id int,-> name varchar(200),-> Fk_pk int-> );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.43 सेकंड)

पहली तालिका को सफलतापूर्वक बनाने के बाद, हम दूसरी तालिका बनाएंगे -

mysql> क्रिएट टेबल प्राइमरीटेबल1-> (-> Fk_pk int,-> DeptName varchar(200),-> Primary key(Fk_pk)-> );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.48 सेकंड)

अब, हमने दोनों टेबल बना लिए हैं। फिर दोनों टेबल अल्टरकमांड की मदद से संबंधित हैं और साथ ही विदेशी कुंजी बाधा भी जोड़ रहे हैं। वाक्य रचना इस प्रकार है -

तालिका बदलें yourFirstTable किसी भी बाधा जोड़ेंConstraintName विदेशी कुंजी (कॉलम_नाम जो दूसरी तालिका में विदेशी कुंजी है) yourSecondTable(column_name जो दूसरी तालिका में प्राथमिक कुंजी का कार्य करता है)।

अब, उपरोक्त क्वेरी का उपयोग दोनों तालिकाओं को जोड़ने के लिए किया जाता है। यह इस प्रकार दिया गया है -

mysql> तालिका में बदलाव करें विदेशी तालिका में बाधा जोड़ेंFKPK विदेशी कुंजी(Fk_pk) संदर्भप्राथमिकतालिका1(Fk_pk);क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (1.57 सेकंड)रिकॉर्ड:0 डुप्लिकेट:0 चेतावनियाँ:0

अब, दोनों टेबल संबंधित हैं। रिकॉर्ड 'विदेशी तालिका' तालिका में इस प्रकार डाले गए हैं -

mysql> INSERT इन फॉरेनटेबल वैल्यू(1,'जॉन',1);

इसके परिणामस्वरूप एक त्रुटि होती है जो नीचे दिए गए आउटपुट में दिखाई जाती है -

त्रुटि 1452 (23000):चाइल्ड पंक्ति को जोड़ या अपडेट नहीं कर सकता:एक विदेशी कुंजी बाधा विफल (`व्यवसाय`। ))

उपरोक्त आउटपुट में, हमें त्रुटि मिल रही है 'चाइल्ड रो को जोड़ या अपडेट नहीं कर सकता:एक विदेशी कुंजी बाधा विफल'। हम नीचे दिखाए गए अनुसार प्राथमिक तालिका 1 तालिका में रिकॉर्ड डालने से इस त्रुटि को दूर कर सकते हैं -

mysql> प्राथमिकTable1 मानों में सम्मिलित करें(1,'ComputerScience');क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.14 सेकंड)

प्राथमिक तालिका 1 तालिका में रिकॉर्ड डालने के बाद, हम बिना किसी त्रुटि के तालिका विदेशी तालिका में आवश्यक रिकॉर्ड सम्मिलित कर सकते हैं। यह नीचे दिखाया गया है -

mysql> INSERT इन फॉरेनटेबल वैल्यू (1,'जॉन',1);क्वेरी ओके, 1 पंक्ति प्रभावित (0.13 सेकंड)

अब, हम सेलेक्ट कमांड की मदद से फॉरेनटेबल के टेबल रिकॉर्ड्स को प्रदर्शित कर सकते हैं, जो इस प्रकार है -

mysql> फॉरेनटेबल से * चुनें;

उपरोक्त क्वेरी का आउटपुट है -

<पूर्व>+----------+----------+----------+| आईडी | नाम | Fk_pk |+----------+----------+----------+| 1 | जॉन | 1 |+------+------+----------+1 पंक्ति सेट (0.00 सेकंड) में

हम सेलेक्ट कमांड की मदद से प्राइमरीटेबल1 के टेबल रिकॉर्ड्स भी प्रदर्शित कर सकते हैं, जो इस प्रकार है -

mysql> प्राइमरीटेबल1 से * चुनें;

उपरोक्त क्वेरी का आउटपुट है -

<पूर्व>+----------+-----------------+| Fk_pk | विभाग का नाम |+----------+-----------------+| 1 | कंप्यूटर साइंस |+----------+-----------------+1 पंक्ति सेट में (0.00 सेकंड)

त्रुटि 1452 - चाइल्ड रो को जोड़ या अपडेट नहीं कर सकता:जब डेटा रिकॉर्ड को शुरू में फॉरेनटेबल में डाला जाता है तो एक विदेशी कुंजी बाधा विफल हो जाती है।

ध्यान दें:सबसे पहले, उपरोक्त त्रुटि से बचने के लिए रिकॉर्ड को दूसरी तालिका यानी प्राइमरीटेबल1 में जोड़ें।

  1. MySQL में डुप्लिकेट कुंजी अपडेट के लिए बाधा जोड़ें

    बाधा जोड़ने के लिए, वाक्य रचना इस प्रकार है - तालिका बदलें yourTableName बाधा जोड़ें कोई भी नाम अद्वितीय(yourColumnName); आइए पहले एक टेबल बनाएं - );query OK, 0 Rows प्रभावित (0.72 sec) डुप्लिकेट कुंजी अपडेट के लिए बाधा जोड़ने की क्वेरी निम्नलिखित है - तालिका बदलें DemoTable1459 बाधा जोड़ें Name

  1. MySQL में विभिन्न तालिका में प्राथमिक कुंजी को विदेशी के रूप में कैसे संदर्भित करें?

    निम्नलिखित वाक्य रचना है - तालिका में बदलाव करें, yourSecondTableNameजोड़ें बाधा `yourConstraintName`विदेशी कुंजी(`yourSecondTableNamePrimaryKey`) संदर्भ yourFirstTableName(yourFirstTablePrimaryKeyColumnName); ऊपर दिए गए सिंटैक्स को समझने के लिए, आइए पहले एक टेबल बनाएं - );क्वेरी ओके, 0 पंक्तियाँ

  1. MySQL में विदेशी कुंजी का उपयोग करना

    आइए समझें कि MySQL में विदेशी कुंजियों का उपयोग कैसे किया जा सकता है - InnoDB तालिकाएँ विदेशी कुंजी बाधाओं की जाँच का समर्थन करती हैं। केवल दो तालिकाओं में शामिल होने के लिए एक विदेशी कुंजी बाधा की आवश्यकता नहीं है। इसका उपयोग एक कॉलम को परिभाषित करते समय किया जा सकता है जिसका उपयोग इनो डीबी के अला