Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

त्रुटि कोड:1005. तालिका '...' नहीं बना सकता (त्रुटि:150)

त्रुटि कोड:1005 -- आपके कोड में गलत प्राथमिक कुंजी संदर्भ है

आमतौर पर यह एक संदर्भित विदेशी कुंजी फ़ील्ड के कारण होता है जो मौजूद नहीं होता है। हो सकता है कि आपसे कोई टाइपो गलती हो, या मामले की जांच करें कि यह समान होना चाहिए, या कोई फ़ील्ड-प्रकार बेमेल है। विदेशी कुंजी-लिंक्ड फ़ील्ड सटीक रूप से परिभाषाओं से मेल खाना चाहिए।

कुछ ज्ञात कारण हो सकते हैं:

  1. दो प्रमुख फ़ील्ड प्रकार और/या आकार बिल्कुल मेल नहीं खाते। उदाहरण के लिए, यदि कोई है INT(10) मुख्य फ़ील्ड INT(10) होना चाहिए साथ ही और नहीं INT(11) या TINYINT . आप SHOW . का उपयोग करके फ़ील्ड आकार की पुष्टि करना चाह सकते हैं CREATE TABLE क्योंकि क्वेरी ब्राउज़र कभी-कभी केवल INTEGER . को नेत्रहीन रूप से दिखाएगा दोनों के लिए INT(10) और INT(11) . आपको यह भी जांचना चाहिए कि कहीं कोई SIGNED तो नहीं है और दूसरा है UNSIGNED . वे दोनों बिल्कुल एक जैसे होने चाहिए।
  2. जिस प्रमुख फ़ील्ड को आप संदर्भित करने का प्रयास कर रहे हैं उनमें से एक में अनुक्रमणिका नहीं है और/या प्राथमिक कुंजी नहीं है। यदि संबंध में कोई एक फ़ील्ड प्राथमिक कुंजी नहीं है, तो आपको उस फ़ील्ड के लिए एक अनुक्रमणिका बनानी होगी।
  3. विदेशी कुंजी नाम पहले से मौजूद कुंजी का डुप्लिकेट है। जांचें कि आपके डेटाबेस में आपकी विदेशी कुंजी का नाम अद्वितीय है। इसका परीक्षण करने के लिए अपने कुंजी नाम के अंत में बस कुछ यादृच्छिक वर्ण जोड़ें।
  4. आपकी एक या दोनों टेबल एक MyISAM है टेबल। विदेशी कुंजियों का उपयोग करने के लिए, टेबल दोनों InnoDB . होने चाहिए . (वास्तव में, यदि दोनों टेबल MyISAM . हैं तब आपको एक त्रुटि संदेश नहीं मिलेगा - यह सिर्फ कुंजी नहीं बनाएगा।) क्वेरी ब्राउज़र में, आप तालिका प्रकार निर्दिष्ट कर सकते हैं।
  5. आपने एक कैस्केड निर्दिष्ट किया है ON DELETE SET NULL , लेकिन प्रासंगिक कुंजी फ़ील्ड NOT . पर सेट है NULL . आप अपने कैस्केड को बदलकर या NULL . को अनुमति देने के लिए फ़ील्ड सेट करके इसे ठीक कर सकते हैं मान।
  6. सुनिश्चित करें कि चारसेट और कोलेट विकल्प तालिका स्तर के साथ-साथ कुंजी कॉलम के लिए अलग-अलग फ़ील्ड स्तर पर समान हैं।
  7. आपके पास अपने विदेशी कुंजी कॉलम पर एक डिफ़ॉल्ट मान (अर्थात, डिफ़ॉल्ट =0) है
  8. संबंध में फ़ील्ड में से एक संयोजन (समग्र) कुंजी का हिस्सा है और इसकी अपनी व्यक्तिगत अनुक्रमणिका नहीं है। भले ही मिश्रित कुंजी के हिस्से के रूप में फ़ील्ड में एक अनुक्रमणिका है, आपको केवल उस कुंजी फ़ील्ड के लिए एक अलग अनुक्रमणिका बनानी होगी ताकि इसे एक बाधा में उपयोग किया जा सके।
  9. आपके ALTER . में सिंटैक्स त्रुटि है कथन या आपने संबंध में फ़ील्ड नामों में से किसी एक को गलत टाइप किया है
  10. आपकी विदेशी कुंजी का नाम 64 वर्णों की अधिकतम लंबाई से अधिक है।

अधिक विवरण के लिए, देखें:MySQL त्रुटि संख्या 1005 तालिका नहीं बना सकता



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. UUID को नंबर के रूप में कैसे स्टोर करें?

  2. MySQL में एक कॉलम अपडेट करें

  3. PHP में परिणाम सरणी लाने के लिए मैं पीडीओ का उपयोग कैसे कर सकता हूं?

  4. MySQL में एक संयोजित स्ट्रिंग में एक सेपरेटर कैसे जोड़ें - CONCAT_WS ()

  5. MySQL में अधिकतम मूल्य के साथ रिकॉर्ड कैसे प्राप्त करें