2012-06-23 4 views
18

मुझे MySQL वर्कबेंच के साथ कुछ समस्या है जिसमें मैं कभी-कभी टेबल बनाते समय विदेशी कुंजी सेट नहीं कर सकता। मैं कभी-कभी कहता हूं कि यह हमेशा ऐसा नहीं होता है। बात यह है कि जब मैं एफके दर्ज करता हूं और एक संदर्भ तालिका चुनता हूं तो मैं एक संदर्भित कॉलम नहीं चुन सकता। मैं चेक बॉक्स पर क्लिक नहीं कर सकता और ड्रॉप डाउन सूची खाली है। मैं वास्तव में यह नहीं समझ सकता कि समस्या क्या है क्योंकि मुझे काम कर रहे एफके से कोई वास्तविक अंतर नहीं दिखता है। मैंने डेटा प्रकार, नाम आदि की जांच की है और वे सही हैं। मैं विस्तृत करने के लिए एक एसएस प्रदान करूंगा। हरे रंग की चिह्नित कुंजी (id_hem) ठीक काम कर रही है और लाल निशान वे हैं जो नहीं करते हैं।

Screenshot of WBविदेशी कुंजी संबंध सेट नहीं कर सकते

उत्तर

4

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

+4

क्या आप कृपया मैन्युअल रूप से इसे सही करने के लिए कुछ जानकारी जोड़ सकते हैं? –

1

id_familjer प्राथमिक कुंजी है? ठीक कीजिए।
संदर्भित कॉलम केवल familjer तालिका प्राथमिक कुंजी प्रदर्शित करता है।

+0

हां, यह एक पीके है। – Sandokan

6

मुझे एक ही समस्या थी .. फिर मैंने दो टेबलों की जांच की है .. समस्या यह थी, इसे दो टेबलों में मिलान किया जाना चाहिए।

अगर foralda तालिका स्तंभ id_familjer है (INT) fkblixten तालिका स्तंभ में
में id_familjer भी होना चाहिए (INT)
। यदि दो डेटा प्रकार मेल नहीं खाते हैं MySQL वर्कबेंच को कॉलम को विदेशी कुंजी के रूप में चुनने की अनुमति नहीं दी जाएगी।

29

मुझे पता है कि यह पुराना है लेकिन सामान्य अपराधी Non Null ध्वज और Unsigned हैं। सुनिश्चित करें कि यदि आप संदर्भित कॉलम सक्षम करते हैं तो आप इन्हें विदेशी कुंजी कॉलम पर मेल खाते हैं।

+1

यह वास्तव में मुझे समय बचाया! – akshay1188

+0

यह मेरी समस्या थी। धन्यवाद! एनएन सेट किया था और प्राथमिक कुंजी पर बिना हस्ताक्षर किए थे लेकिन बाधा – nils

+2

स्थापित करने से पहले विदेशी कुंजी पर भूल गए थे इसलिए मुझे एसओ पसंद है। 3 साल और कोई व्यक्ति उस बग का कारण बनता है जो अभी भी तय नहीं किया गया है और इसे हल करता है! टीवाई – hammus

2

यह विभिन्न collations के कारण भी हो सकता है। बस जांचें कि क्या उन 2 कॉलमों में एक ही संयोजन है।

मेरे मामले में एक

तालिका डिफ़ॉल्ट (UTF8 सामान्य उपयोग करते हुए) के साथ था

साथ

utf8_unicode_ci एक दूसरे

मैं उन निर्धारित किया है Utf8_unicode_ci के साथ 2 कॉलम और यह काम करता है।

1

विदेशी कुंजी में प्राथमिक कुंजी के समान समान स्थिरांक होना चाहिए। आप एआई, प्राथमिक कुंजी को अनदेखा कर सकते हैं। प्राथमिक कुंजी यूआई है, तो विदेशी भी होना चाहिए यूआई

UI-> अहस्ताक्षरित interger AI-> ऑटो वृद्धि

0

मेरे मामले में, मैं हर कॉलम है कि मैं सेट करना चाहते हैं में 'मिलान' को बदलने विदेशी कुंजी

उदाहरण के लिए, मेरा एफके कॉलम संयोजन 'utf8' है, मैं भी अपनी संदर्भ तालिका 'utf8' में बदलता हूं। और यह मेरी समस्या हल हो गई है।

मुझे आशा है कि यह सहायक होगा।

0

इसके अलावा मेरे दो सेंट जोड़ने के लिए, यह भी होता है यदि आप उसी डेटाबेस नामस्थान में ईईआर आरेख बना रहे हैं और दो या दो से अधिक आरेखों में एक ही नाम वाली तालिका होती है।

तो यदि आपने किसी तालिका से संबंध बनाने का प्रयास किया है (जो एक ही नाम के साथ किसी अन्य आरेख में भी मौजूद है) तो यह संदर्भ तालिका में दो बार दिखाई देगा, दोनों आपके वर्तमान आरेख स्कीमा का संदर्भ लेंगे और यह नहीं होगा आपको एक संबंध स्थापित करने की अनुमति देता है।

समाधान अन्य आरेख में तालिका का नाम बदलने का है।