2011-04-18 16 views
6

मेरे आवेदन में, मैं कुछ बदलाव करता हूं और उन्हें एक परीक्षण सर्वर पर अपलोड करता हूं। क्योंकि मेरे पास सर्वर डेटाबेस तक कोई पहुंच नहीं है क्योंकि मैं ALTER आदेशों को इसमें परिवर्तन करने के लिए चलाता हूं।डेटा खोए बिना MySQL तालिका को कैसे बदला जाए?

ALTER TABLE `blahblahtable` ADD COLUMN `newcolumn` INT(12) NOT NULL 

उसके बाद, मैंने पाया कि सभी तालिका के डेटा हटा दिया गया है:

एक पद्धति का उपयोग करना मैं सर्वर पर निम्न आदेश भाग गया। अब टेबल खाली है।

इसलिए मुझे तालिका बिना डेटा को हटाने की आवश्यकता है। क्या उसे करने का कोई तरीका है?

+2

आपका प्रश्न स्पष्ट नहीं है। क्या आप वास्तव में क्या हुआ, इसके बारे में अधिक जानकारी प्रदान कर सकते हैं? –

+0

क्या आपका नाम बदलना था? –

+0

सुनिश्चित करें कि आप पाठ को पूर्णांक में परिवर्तित नहीं करते हैं (उस तरह कुछ) – ajreal

उत्तर

14

आपका प्रश्न काफी स्पष्ट है। आप तालिका में एक नया कॉलम जोड़ रहे हैं, और इसे NOT NULL पर सेट कर रहे हैं।
बातें स्पष्ट करने के लिए, मैं सर्वर की प्रतिक्रिया समझा जाएगा जब आप कमांड चलाएँ:

  1. आप कोई नया स्तंभ जोड़ने, तो तालिका के हर पंक्ति उस स्तंभ के लिए एक मूल्य निर्धारित करने के लिए है ।

  2. आप किसी भी डिफ़ॉल्ट मान घोषित नहीं करते हैं के रूप में, सभी पंक्तियों इस नए कॉलम के लिए null निर्धारित किया है।

  3. सर्वर नोटिस करता है कि तालिका के पंक्तियों में null एक कॉलम पर मान है जो null एस की अनुमति नहीं देता है। यह अवैध है।

  4. संघर्ष को हल करने के लिए, अवैध पंक्तियां हटा दी गई हैं। (अनुशंसित)

    • एक डिफ़ॉल्ट मान सेट स्तंभ आप बना रहे हैं के लिए:

इस समस्या के लिए कुछ अच्छी फिक्स कर रहे हैं।

  • NOT NULL बिना स्तंभ बनाएँ, उचित मूल्यों को निर्धारित है, और फिर स्तंभ NOT NULL बनाते हैं।

  • 0

    आप एक सारणी तालिका बना सकते हैं, उस तालिका से सभी जानकारी पास कर सकते हैं जिसे आप बदलना चाहते हैं, और फिर जानकारी को बदली गई तालिका में वापस कर दें।

    +0

    क्या आप उदाहरण प्रदान कर सकते हैं? –

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