काफी कुछ चीजें हैं जो गलत 150 का कारण बन सकती हैं, इसलिए इस विषय पर खोज करने वाले लोगों के लिए, यहां मुझे लगता है कि यह संपूर्ण सूची के करीब है (स्रोत क्रोन 150 का स्रोत ):
गलत 150 या गलत 121 के लिए, बस SHOW इंजन INNODB STATUS में टाइप करने के लिए, "LATEST FOREIGN KEY ERROR" नामक एक अनुभाग है। इसके तहत यह आपको एक बहुत ही उपयोगी त्रुटि संदेश देगा, जो आम तौर पर आपको तुरंत बता देगा कि मामला क्या है। इसे चलाने के लिए आपको SUPER विशेषाधिकारों की आवश्यकता होती है, इसलिए यदि आपके पास ऐसा नहीं है, तो आपको निम्नलिखित परिदृश्यों का परीक्षण करना होगा।
1) डेटा प्रकार मेल नहीं खाते: कॉलम के प्रकार समान होने चाहिए
2) मूल कॉलम अनुक्रमणित नहीं हैं (या गलत क्रम में अनुक्रमित)
3) कॉलम Collations मैच नहीं है
4) एक पूर्ण स्तंभ पर एक सेट का उपयोग करना
5) टेबल कोलाज मेल नहीं खाते: भले ही कॉलम का मिलान कुछ MySQL संस्करणों पर हो, यह एक समस्या हो सकती है।
6) पैरेंट कॉलम असल में पेरेंट टेबल में मौजूद नहीं है। वर्तनी की जाँच करें (और शायद स्तंभ के आरंभ या अंत में एक स्थान)
7) स्तंभों में से किसी एक पर अनुक्रमणिका अपूर्ण है, या पूर्ण अनुक्रमणिका के लिए स्तंभ बहुत लंबा है। ध्यान दें कि MySQL (जब तक आप इसे ट्वीक नहीं करते हैं) की अधिकतम एकल स्तंभ कुंजी लंबाई 767 बाइट्स होती है (यह एक varchar (255) UTF कॉलम से मेल खाती है)
यदि आपको एक त्रुटिपूर्ण 121 मिलता है, तो इसके कुछ कारण हैं:
1) आपके द्वारा चुना गया बाधा नाम पहले ही लिया जा चुका है
2) कुछ सिस्टम पर अगर आपके स्टेटमेंट और टेबल के नामों में कोई अंतर है। यह आपको काट सकता है यदि आप एक सर्वर से दूसरे में जाते हैं जिसमें अलग-अलग केस हैंडलिंग नियम हैं।