Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

केवल mysqldump स्कीमा, बिना ड्रॉप के स्कीमा अपडेट

MySQL को कैसे पता चलेगा कि क्या अपडेट करना है? यह नहीं जान सकता कि किसी और का डेटाबेस किस स्थिति में होगा, इसलिए यह नहीं जान सकता कि कौन से अपडेट लागू करने हैं। साथ ही, अद्यतनों को अक्सर केवल स्कीमा बदलने से अधिक की आवश्यकता होती है; उन्हें पहले से मौजूद डेटा में परिवर्तन की आवश्यकता हो सकती है, या पुराने स्कीमा से नए में स्थानांतरित होने के लिए डेटा की आवश्यकता हो सकती है। आपको कभी भी ऐसा कुछ नहीं मिलेगा जो स्वचालित रूप से उस सब का पता लगा ले।

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

अधिकांश आधुनिक वेब ढांचे, जैसे रूबी ऑन रेल्स , आपके पास पहले से चलाए गए माइग्रेशन का ट्रैक रखना आसान बनाने के लिए माइग्रेशन के लिए समर्थन है। यदि आप माइग्रेशन का समर्थन करने वाले ढांचे का उपयोग नहीं कर रहे हैं, तो माइग्रेशन लागू करने के लिए अपनी स्क्रिप्ट लिखना बहुत मुश्किल नहीं होगा। बस प्रत्येक माइग्रेशन को नंबर दें, या उसमें एक तिथि डालें, और अपने डेटाबेस में केवल उस स्कीमा के वर्तमान संस्करण को संग्रहीत करते हुए एक तालिका रखें, जिस पर आप हैं। जब आप अपनी माइग्रेट स्क्रिप्ट चलाते हैं, यदि उस मौजूदा संस्करण से नया कोई माइग्रेशन होता है, तो उन स्क्रिप्ट को क्रम में लागू करें, और फिर डेटाबेस में उस नंबर को अपडेट करें जो बताता है कि आप किस संस्करण पर हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तीसरी तालिका में FK बाधा के उल्लंघन को रोकने के लिए बाधा

  2. MySQL ODBC कनेक्शन को बंद/पूलिंग करना

  3. पूर्वजों की सूची से पेड़ बनाने का सबसे आसान तरीका

  4. क्या मैं डिफ़ॉल्ट पेजिनेशन को ओवरराइड किए बिना कस्टम क्वेरी को पेजिनेट कर सकता हूं?

  5. विभिन्न डेटाबेस में एकाधिक टेबल कनेक्ट करें? माई एसक्यूएल