2009-09-20 17 views
8

मैं विदेशी कुंजी सूचकांक छोड़ने के साथ समस्या मिल गया है, मैं हमेशा एक ही गलतीMySQL त्रुटि जब छोड़ने सूचकांक (errno 150)

ALTER TABLE `comments` DROP INDEX `id_user` 

जो

1025 - Error on rename of './postuj_cz1/#sql-d834_a0c704' 
to './postuj_cz1/comments' (errno: 150) 

id_user आउटपुट अन्य पर मिलता है तालिका सरल प्राथमिक कुंजी सूचकांक है।

मैं MySQL संस्करण 5.0.85

+1

पहले सभी तालिकाओं को तालिका में छोड़ने का प्रयास करें। –

+0

दरअसल मेरे पास तालिका –

उत्तर

2

उपयोग कर रहा हूँ this link के अनुसार, त्रुटि प्राथमिक कुंजी क्षेत्र की परिभाषा से संबंधित है। त्रुटि विदेशी कुंजी सूचकांक के बारे में नहीं है।

COMMENTS तालिका के लिए प्राथमिक कुंजी की जांच करें ताकि यह सुनिश्चित किया जा सके कि UNSIGNED कीवर्ड नहीं है जबकि COMMENTS.id_user विदेशी कुंजी के पास अनन्य कीवर्ड था। यह कीवर्ड समस्या पैदा कर रहा था - असंगत प्रकार का क्षेत्र।

ठीक करने के लिए, COMMENTS तालिका के लिए प्राथमिक कुंजी परिभाषा में UNSIGNED कीवर्ड जोड़ें। या UNSIGNED कीवर्ड को विदेशी कुंजी परिभाषा से हटाएं ...

11

अन्य कारण भी हैं। उदाहरण के लिए मेरे पास एक अलग इंडेक्स था जिसमें दो अलग-अलग विदेशी कुंजी कॉलम शामिल थे। इससे पहले कि मैं अद्वितीय इंडेक्स छोड़ सकता हूं, मुझे विदेशी कुंजी को प्रश्न में छोड़ना पड़ा। (और जाहिर है कि आप बाद में विदेशी कुंजी जोड़ सकते हैं।)

+1

तालिका में कोई फर्क नहीं है, धन्यवाद, यह मेरे मामले में समस्या थी। – nightcoder

5

INNODB: यह सूचकांक छोड़ने से पहले संबंध को हटाने के जितना आसान हो सकता है।

+1

संबंध मेरे मामले के लिए, सब कुछ लॉक कर रहा था। तो, संबंधों को हटाकर, सूचकांक को हटाकर, अगली अनुक्रमणिका बनाते हुए, फिर संबंधों को पुनर्स्थापित करें – Vaseltior

1

सूचकांक 'उपयोगकर्ता' मेज पर एक विदेशी कुंजी के लिए है, इसलिए पहले में, इस आदेश का प्रयास करें:

SHOW CREATE TABLE my_table 

, बाधा विदेशी कुंजी पर सूचकांक करने के लिए इसी का नाम खोजें

और उसके बाद, आदेश का प्रयास करें:

ALTER TABLE my_table DROP FOREIGN KEY FK_myconstraintcode 

चेतावनी: यदि आप विदेशी कुंजी नाम के साथ विदेशी कुंजी ड्रॉप करने की कोशिश करते हैं, तो आप के लिए एक त्रुटि होगी!

संबंधित मुद्दे