2010-04-24 28 views

उत्तर

9

यह किसी भी अन्य स्तंभ में फेरबदल से अलग नहीं है -

ALTER TABLE `pkey` CHANGE `keyfield` `keyfield2` INT(11) NOT NULL AUTO_INCREMENT 

इस तालिका pkey में स्तंभ keyfieldkeyfield2 के नाम से जाना बदलता है - आप बाद में परिभाषा आपूर्ति करने के लिए, हमेशा की तरह है।

+12

यह समाधान त्रुटि 150 का कारण बन जाएगा। –

+4

यह तब काम करता है जब कोई विदेशी कुंजी नहीं होती है। एक और जवाब पूरे डेटाबेस को डंपिंग/बहाल करने का सुझाव देता है जो काम करेगा लेकिन मेरे लिए काम की जाने वाली विदेशी कुंजी/इंडेक्स को छोड़कर/पुनर्निर्माण कर रहा है। – penfold

+0

@Pavel Rodionov से सहमत है, यह निम्न त्रुटि को फेंकता है: [HY000] [1025] xxx से yyy का नाम बदलने में त्रुटि (errno: 150) –

1

यदि आप इनो डीबी के साथ काम कर रहे हैं तो मुझे लगता है कि आप प्राथमिक कुंजी का नाम नहीं बदल सकते हैं, कम से कम आप विदेशी कुंजी द्वारा संदर्भित नहीं कर सकते हैं। आपको डेटाबेस को डंप करने, कॉलम का नाम बदलने और डंप फ़ाइल में कुंजियों को संदर्भित करने की आवश्यकता है, फिर डेटाबेस को फिर से लोड करें।

6

शायद आपके पास एक विदेशी कुंजी बाधा है। आप उन्हें SET foreign_key_constraints=0 द्वारा अक्षम कर सकते हैं लेकिन आपको डेटाबेस को बाद में अपडेट करना याद रखना होगा।

+0

मैं यह मान कैसे बदलूं? मैं मूल्य 1 के बाद बदलता हूँ? –

+0

@ राफेलगोम्स फ्रांसिस्को आपका क्या मतलब है? – Alex

3

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

3

परिवर्तन कथन के प्राथमिक कुंजी भाग को छोड़ दें। प्राथमिक कुंजी स्वचालित रूप से अपडेट हो जाएगी।

+0

यह उत्तर तब होता है जब आपको अप्रत्याशित त्रुटियां मिल रही हैं। महान! –

0

दूसरों टेबल अपनी मेज पर विदेशी कुंजी है, तो आप सीधे तालिका में परिवर्तन का उपयोग कर स्तंभ का नाम नहीं बदल सकते हैं, यह निम्न त्रुटि फेंकता होगा: [HY000] [1025] yyy को xxx का नाम बदलने पर त्रुटि (errno: 150) आपको: प्राथमिक कुंजी आप

  • नाम बदलना चाहते हैं की ओर इशारा करते दूसरों टेबल से

    • ड्रॉप विदेशी कुंजी प्राथमिक कुंजी
    • दूसरों तालिकाओं के लिए विदेशी स्तंभ जोड़ने के नाम बदलने

    इंटेलिज में एक टेबल का नाम बदलने पर, यह आपको कोड छोड़ देता है और विदेशी कुंजी जोड़ता है।

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