2012-10-01 16 views
5

मैंनेMysql त्रुटि 150 नाम बदलने

अब मैं UTF8 में पूरे डाटाबेस को बदलने के लिए कोशिश कर रहा हूँ latin1 को columns'charset के साथ एक पुराने डाटाबेस, मैं में सभी तालिकाओं को बदलने के लिए एक स्क्रिप्ट बनाया है इस तरह UTF8:

ALTER TABLE `mytable` CHARACTER SET utf8; 

और सभी इस तरह कॉलम:

01:

ALTER TABLE `mytable` CHANGE `mycolumn` `mycolumn` varchar(200) CHARACTER SET utf8; 

लेकिन कुछ स्तंभों पर (प्राथमिक कुंजी और बाधाओं, मैं लगता है) मैं इस त्रुटि मिल रही है

Error on rename of './test/#sql-5028_217b96' to './test/mytable' (errno: 150) 

कोई भी जानता है कि इस बारे में कैसे जाना है?

उत्तर

9

आपकी mycolumn सबसे अधिक संभावना है कि एक विदेशी कुंजी का हिस्सा है। यदि ऐसा है, तो आपको बाधा को दूर करना होगा, फिर प्राथमिक/विदेशी कुंजी दोनों के लिए प्रकार बदलें और फिर बाधा जोड़ें।

+0

मैं बस इसी तरह की समस्या में भाग गया ('INT' से 'बिगिनट' तक जा रहा हूं)। मैंने तालिका को डुप्लिकेट करने का निर्णय लिया (जिसमें कॉलम पर एक विदेशी कुंजी बाधा थी जिसे मुझे बदलने की आवश्यकता थी) और इसकी सामग्री, कॉलम प्रकार को बिना किसी समस्या के डुप्लिकेट तालिका में बदलें, और फिर मूल तालिका को डुप्लिकेट तालिका से बदल दिया। क्या यह एक खतरनाक चीज है? – tylerl

+0

@tylerl नहीं, यदि मूल परिवर्तन पर डेटा आपके परिवर्तनों के दौरान अपरिवर्तित रहता है। अन्यथा आप डेटा हानि/असंगतता हो सकती है। –

+0

हाँ मुझे विश्वास है कि यह मेरे ऐप में चीजों को तोड़ दिया है ... तालिका को डुप्लीकेट किया गया था (कुछ मैक पर सीक्वेल प्रो का उपयोग कर रहा है) पर कुछ सही प्रतिलिपि नहीं होनी चाहिए? मुझे नहीं लगता कि कोई भी डेटा खो गया था, लेकिन अचानक मेरा सर्वर किसी विशेष तालिका में डेटा सहेजने जैसा महसूस नहीं कर रहा था! अजीब ... समस्या यह है कि मैंने एक नोट बनाया था कि प्रश्न में क्षेत्र एक विशेष तालिका में एक विदेशी कुंजी थी, लेकिन मुझे एफके बाधा नहीं मिल रही है! Grrrr .... – tylerl

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