2011-03-29 4 views
49

का बैक अप लेते समय आवेषण के लिए कॉलम नाम बनाएं, मैं कैसे सम्मिलित कथन में कॉलम नामों के साथ बैकअप के लिए mysqldump को निर्देशित करूं?
मेरे मामले में मैंने किया था नहीं एक सामान्य डालने एसक्यूएल केमाईस्कल्डम्प:

LOCK TABLES `users` WRITE; 
/*!40000 ALTER TABLE `users` 
INSERT INTO `users` VALUES (1 

संरचना में जिसके परिणामस्वरूप के साथ बैक अप।

अब मैं आगे बढ़ गया और उपयोगकर्ताओं में स्कीमा से कॉलम हटा दिया। इसके बाद जब मैं बैकअप एसक्यूएल चलाता हूं तो मुझे कॉलम नंबर मिस्चैच त्रुटि मिलती है।

यह ठीक करने के लिए मैं कॉलम नाम लिखने के लिए mysqldump को निर्देश देने के बारे में कैसे जा सकता हूं? यहाँ कैसे मैं इसे अभी

mysqldump --host=${dbserver} --user=${dbusername} --password=${dbpassword} \ 
      --no-create-db --no-create-info --extended-insert --single-transaction \ 
      --compress tablename 

कर एक व्यापक स्तर पर है, इन स्कीमा परिवर्तनों को प्रबंधित करने के लिए सबसे अच्छा अभ्यास क्या है?

+1

पैरामीटर mysqldump कमान कैसे स्पष्ट रूप से निर्दिष्ट क्षेत्रों तुम्हारी मदद करेगा में उपयोग --complete-insert? निर्दिष्ट फ़ील्ड के साथ भी कॉलम हटाए जाने के बाद भी गलत होगा। – zerkms

उत्तर

113

+6

क्या कोई सौहार्दपूर्ण कारण है कि यह mysqldump के लिए डिफ़ॉल्ट व्यवहार क्यों नहीं होना चाहिए? – paradiso

+4

@paradiso मुझे विश्वास है कि ऐसा इसलिए है क्योंकि 'mysqldump' का उपयोग बैकअप के लिए किया जाता है, और यह एक अच्छी बात है कि वे जितना संभव हो उतना छोटा हो। – Cacovsky

+6

@paradiso यह भी ध्यान दें कि mysqldump डिफ़ॉल्ट रूप से संरचना और डेटा को डंप कर रहा है, इस प्रकार कॉलम नाम की जानकारी बेकार बना रहा है। निर्दिष्ट कॉलम नाम होने पर उपयोगी होता है जब आप किसी तालिका में मान लोड करते हैं जिसका संरचना उस डेटा से भिन्न हो सकती है, जिसे आपने डेटा निकाला है। – Ninj

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

  • कोई संबंधित समस्या नहीं^_^