ट्रैकिंग डीबी स्कीमा परिवर्तन के लिए तंत्र

वोट
128

पर नज़र रखने और / या DB स्कीमा परिवर्तन स्वचालित के लिए सर्वोत्तम तरीकों क्या हैं? हमारी टीम संस्करण नियंत्रण के लिए सबवर्सन का उपयोग करता है और हम अपने कार्यों में से कुछ इस तरह से स्वचालित करने के लिए कर लिया है (धक्का, एक मचान सर्वर से बनाता है एक उत्पादन सर्वर के लिए परीक्षण किया कोड की तैनाती) लेकिन हम अभी भी मैन्युअल रूप से डेटाबेस अद्यतन कर रहे हैं। मुझे लगता है या एक समाधान हमें अलग वातावरण के साथ सर्वर पर कुशलता से काम करने, जबकि एक बैकएंड के माध्यम से जो कोड और डीबी अपडेट विभिन्न सर्वरों के लिए चारों ओर धकेल दिया जाता है के रूप में सबवर्सन का उपयोग जारी रखने की अनुमति देता है कि बनाने के लिए करना चाहते हैं।

कई लोकप्रिय सॉफ्टवेयर संकुल स्वत: अपडेट स्क्रिप्ट जो डीबी संस्करण का पता लगाने और आवश्यक परिवर्तनों को लागू शामिल हैं। यह और भी एक बड़े पैमाने (कई परियोजनाओं और कभी कभी एकाधिक वातावरण और सभी भाषाओं में) पर यह करने के लिए सबसे अच्छा तरीका है? यदि हां, तो वहाँ किसी भी मौजूदा कोड वहाँ बाहर है कि प्रक्रिया को सरल या यह सबसे अच्छा सिर्फ हमारे अपने समाधान रोल करने है? किसी को भी करने से पहले कुछ इसी तरह से लागू किया और यह सबवर्सन में एकीकृत के बाद प्रतिबद्ध हुक, या यह एक बुरा विचार है गया है?

एक समाधान है कि कई प्लेटफार्मों का समर्थन करता है बेहतर होगा करते हैं, हम निश्चित रूप से लिनक्स / अपाचे / MySQL / पीएचपी ढेर समर्थन करने के लिए के रूप में हमारे काम का बहुमत है कि मंच पर है की जरूरत है।

04/08/2008 को 22:31
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


20 जवाब

वोट
54

रेल दुनिया में, माइग्रेशन, जिसमें स्क्रिप्ट डेटाबेस में परिवर्तन नहीं बल्कि एसक्यूएल का एक डेटाबेस विशिष्ट स्वाद से रूबी में बना रहे हैं की अवधारणा है। आपका रूबी प्रवास कोड समाप्त होता है अपने वर्तमान डेटाबेस के लिए DDL विशिष्ट में परिवर्तित कर दिया जा रहा है; इस स्विचन डेटाबेस प्लेटफार्मों बहुत आसान बना देता है।

आप डेटाबेस के लिए बनाने के हर बदलाव के लिए, आप एक नया माइग्रेशन लिखें। एक "ऊपर" जो विधि में परिवर्तन लागू किए जाने और एक "नीचे" जो विधि में परिवर्तन पूर्ववत किए हैं: माइग्रेशन आम तौर पर दो तरीकों की है। एक एकल आदेश तारीख तक डेटाबेस लाता है, और भी स्कीमा के विशेष संस्करण के लिए डेटाबेस लाने के लिए इस्तेमाल किया जा सकता। रेल में, माइग्रेशन परियोजना निर्देशिका में अपने स्वयं के निर्देशिका में रखा जाता है और संस्करण नियंत्रण किसी भी अन्य परियोजना कोड की तरह में जाँच मिलता है।

रेल माइग्रेशन के लिए यह ओरेकल गाइड माइग्रेशन काफी अच्छी तरह से शामिल किया गया।

अन्य भाषाओं का उपयोग कर डेवलपर्स माइग्रेशन पर ध्यान दिया है और अपने स्वयं के भाषा-विशिष्ट संस्करणों को लागू किया है। मैं के बारे में पता Ruckusing , एक PHP माइग्रेशन प्रणाली है कि रेल 'माइग्रेशन के बाद मॉडलिंग की है; यह आप के लिए क्या देख रहे हो सकता है।

04/08/2008 को 23:45
का स्रोत उपयोगकर्ता

वोट
48

हमने अपने डेटाबेस में 5 अलग अलग प्रतिष्ठानों (उत्पादन, मचान और कुछ विकास प्रतिष्ठानों) पर सिंक्रनाइज़ स्कीमेता रखने के लिए bcwoord को कुछ इसी तरह का उपयोग करें, और संस्करण नियंत्रण में बैकअप ले लिया है, और यह बहुत अच्छी तरह से काम करता है। मैं थोड़ा विस्तार से बता देंगे:


डेटाबेस संरचना सिंक्रनाइज़ करने के लिए, हम एक ही स्क्रिप्ट, update.php, और फ़ाइलों गिने 1.sql, 2.sql, 3.sql, आदि स्क्रिप्ट एक अतिरिक्त तालिका का उपयोग करता की वर्तमान संस्करण संख्या स्टोर करने के लिए की एक संख्या है डेटाबेस। N.sql फ़ाइलें हाथ से बनाई गई हैं संस्करण से (एन 1) के लिए डेटाबेस के संस्करण एन जाना।

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

अद्यतन स्क्रिप्ट इस तरह काम करता है:

  • डेटाबेस से कनेक्ट करें।
  • वर्तमान डेटाबेस (क्योंकि सामान की एक बैकअप बनाने जाएगा बिगड़ जाए) [mysqldump]।
  • बहीखाता तालिका (बुलाया _meta) बनाएं अगर यह मौजूद नहीं है।
  • _meta मेज से वर्तमान संस्करण पढ़ें। मान लें 0 यदि नहीं मिला।
  • सभी .sql फ़ाइलों के लिए संस्करण की तुलना में अधिक गिने, उन्हें क्रम में निष्पादित
  • यदि फ़ाइलों में से एक एक त्रुटि का उत्पादन: बैकअप के लिए वापस रोल
  • अन्यथा, उच्चतम .sql निष्पादित फाइल करने के लिए बहीखाता तालिका में संस्करण को अद्यतन।

सब कुछ स्रोत नियंत्रण में चला जाता है, और हर स्थापना एक ही स्क्रिप्ट निष्पादन (उचित डेटाबेस पासवर्ड आदि के साथ update.php बुला) के साथ नवीनतम संस्करण के लिए अद्यतन करने के लिए एक स्क्रिप्ट है। हम एक स्क्रिप्ट है कि स्वचालित रूप से डेटाबेस अद्यतन स्क्रिप्ट कहता है, तो एक कोड अद्यतन आवश्यक डेटाबेस अद्यतन के साथ आता है के माध्यम से अद्यतन मचान और उत्पादन वातावरण SVN।

हम यह भी खरोंच से पूरे डेटाबेस बनाना एक ही स्क्रिप्ट का उपयोग कर सकते हैं; हम सिर्फ ड्रॉप और डेटाबेस को पुन:, तो स्क्रिप्ट जो पूरी तरह से डेटाबेस फिर से आबाद होगा चलाते हैं। हम यह भी स्वचालित परीक्षण के लिए एक खाली डेटाबेस को भरने के लिए स्क्रिप्ट का उपयोग कर सकते हैं।


यह इस प्रणाली स्थापित करने के लिए केवल कुछ ही घंटे लगे, यह धारणात्मक आसान है और हर किसी के संस्करण नंबर योजना हो जाता है, और इसे आगे बढ़ने की क्षमता होने और डेटाबेस डिजाइन विकसित करने में अमूल्य किया गया है, संवाद या मैन्युअल रूप से संशोधनों को निष्पादित करने के बिना सभी डेटाबेस पर।

जब phpMyAdmin के सवालों चिपकाने हालांकि सावधान रहें! उन उत्पन्न प्रश्नों आमतौर पर डेटाबेस का नाम, जो आप निश्चित रूप से, क्योंकि यह अपनी स्क्रिप्ट टूट जाएगा नहीं करना चाहती शामिल! कुछ की तरह बनाएं टेबल mydbnewtable(...) असफल हो जायेगी अगर सिस्टम पर डेटाबेस mydb नहीं बुलाया जाता है। हम एक पूर्व टिप्पणी SVN हुक कि .sql युक्त फ़ाइलों की अनुमति नहीं देंगे बनाई mydbस्ट्रिंग है, जो कि एक निश्चित संकेत है किसी को कॉपी / उचित जाँच के बिना phpMyAdmin से चिपकाया गया।

22/08/2008 को 15:44
का स्रोत उपयोगकर्ता

वोट
11

मेरी टीम के सभी डेटाबेस परिवर्तन स्क्रिप्ट नहीं, और, SVN करने के लिए उन लिपियों करता आवेदन में से प्रत्येक के रिलीज के साथ। यह कोई डेटा खोए बिना, डेटाबेस के वृद्धिशील परिवर्तन के लिए अनुमति देता है।

एक रिलीज से अगले करने के लिए जाने के लिए, तुम सिर्फ परिवर्तन लिपियों के सेट चलाने की जरूरत है, और अपने डेटाबेस अप करने की तारीख है, और आप अभी भी अपने सभी डेटा मिल गया है। यह सबसे आसान तरीका नहीं हो सकता है, लेकिन यह निश्चित रूप से प्रभावी है।

05/08/2008 को 20:56
का स्रोत उपयोगकर्ता

वोट
9

आप अगर अब भी समाधान के लिए देख रहे हैं: हम एक उपकरण neXtep डिजाइनर कहा जाता है का प्रस्ताव कर रहे हैं। यह एक डेटाबेस विकास के वातावरण जिसके साथ आप संस्करण नियंत्रण के तहत अपने पूरे डेटाबेस डाल सकते हैं। आप एक संस्करण नियंत्रित भंडार जहां हर परिवर्तन ट्रैक किया जा सकता पर काम करते हैं।

जब आप एक अद्यतन जारी करने के लिए की जरूरत है, तो आप अपने घटकों के लिए प्रतिबद्ध कर सकते हैं और उत्पाद स्वचालित रूप से पिछले संस्करण से एसक्यूएल उन्नयन स्क्रिप्ट उत्पन्न होगा। बेशक, आप किसी भी 2 संस्करण से इस एसक्यूएल उत्पन्न कर सकते हैं।

तो फिर तुम कई विकल्प हैं: आप उन लिपियों लेने के लिए और अपने अनुप्रयोग कोड के साथ अपने SVN में डाल इतना है कि यह अपने मौजूदा तंत्र द्वारा तैनात किया जाएगा कर सकते हैं। एक अन्य विकल्प neXtep के वितरण तंत्र का उपयोग करने के लिए है: स्क्रिप्ट कुछ एक "वितरण पैकेज" (SQL स्क्रिप्ट + एक्सएमएल वर्णनकर्ता) कहा जाता है में निर्यात किया जाता है, और एक इंस्टॉलर इस पैकेज को समझते हैं और लक्ष्य सर्वर पर तैनात है, जबकि strcutural स्थिरता सुनिश्चित करने, निर्भरता कर सकते हैं चेक, स्थापित संस्करण दर्ज की, आदि

उत्पाद जीपीएल है और ग्रहण पर आधारित है तो उस पर लिनक्स, मैक और खिड़कियों चलाता है। यह भी ओरेकल, MySQL और पल में PostgreSQL (डीबी 2 समर्थन रास्ते पर है) का समर्थन है। : विकि पर एक नज़र जहां आप अधिक विस्तृत जानकारी मिल जाएगी है http://www.nextep-softwares.com/wiki

25/10/2010 को 06:46
का स्रोत उपयोगकर्ता

वोट
9

यहां मुद्दा यह वास्तव में यह स्क्रिप्ट के डेवलपर्स स्रोत नियंत्रण में अपने स्वयं के स्थानीय परिवर्तन टीम के साथ साझा करने के लिए आसान कर रही है। मैं कई वर्षों के लिए इस समस्या का सामना करना पड़ा है, और डेटाबेस पेशेवरों के लिए दृश्य स्टूडियो की कार्यक्षमता से प्रेरित था। आप एक ही सुविधाओं के साथ एक खुला स्रोत उपकरण चाहते हैं, इस प्रयास करें: http://dbsourcetools.codeplex.com/ मज़े, - नाथन।

07/07/2009 को 14:26
का स्रोत उपयोगकर्ता

वोट
6

स्कॉट Ambler लेख की एक महान श्रृंखला पैदा करता है (और एक सह लेखक पुस्तक ) विचार है कि आप अनिवार्य रूप से अपने स्कीमा बनाए रखने के लिए TDD सिद्धांतों और अभ्यासों आवेदन करना चाहिए के साथ डेटाबेस रिफैक्टरिंग पर,। आप डेटाबेस के लिए संरचना और बीज डेटा इकाई परीक्षण की एक श्रृंखला की स्थापना की। फिर, इससे पहले कि आप कुछ भी बदलने के लिए, आप संशोधित / परीक्षण लिखते हैं कि परिवर्तन को प्रतिबिंबित करने।

अब हम थोड़ी देर के लिए यह कर दिया है और यह काम करने लगता है। हम एक इकाई परीक्षण सूट में बुनियादी स्तंभ नाम और डेटाप्रकार चेकों उत्पन्न करने के लिए कोड लिखा था। हम चाहते हैं कि SVN चेकआउट में डेटाबेस को लाइव मेल खाता db आवेदन वास्तव में चल रहा है सत्यापित करने के लिए उन परीक्षण कभी भी फिर से चलाएं कर सकते हैं।

यह पता चला है के रूप में, डेवलपर्स भी कभी कभी अपने सैंडबॉक्स डेटाबेस और उपेक्षा SVN में स्कीमा फ़ाइल अद्यतन करने के लिए tweak। कोड तो एक डाटाबेस परिवर्तन किया है कि में जाँच नहीं की गई पर निर्भर करता है। बग उस तरह नीचे पिन करने के लिए विक्षिप्त की तरह कठिन हो सकता है, लेकिन टेस्ट स्वीट अभी यह लेने होंगे। यह विशेष रूप से अच्छा होगा यदि आप इसे एक बड़ा सतत एकीकरण योजना में निर्माण किया है है।

29/08/2008 को 05:51
का स्रोत उपयोगकर्ता

वोट
6

एक फ़ाइल में अपने स्कीमा डंप और स्रोत नियंत्रण में जोड़ें। फिर एक सरल diff आपको बताएंगे कि क्या बदल दिया है।

06/08/2008 को 17:59
का स्रोत उपयोगकर्ता

वोट
5

लालकृष्ण स्कॉट एलन जो वृद्धिशील अद्यतन लिपियों / माइग्रेशन अवधारणा अन्य उत्तर यहाँ संदर्भित उपयोग करता स्कीमा संस्करण पर एक सभ्य लेख या दो, है; देख http://odetocode.com/Blogs/scott/archive/2008/01/31/11710.aspx

29/08/2008 को 06:11
का स्रोत उपयोगकर्ता

वोट
5

आप सी # प्रयोग कर रहे हैं, सबसोनिक, एक बहुत ही उपयोगी ORM उपकरण पर एक नजर है, लेकिन यह भी अपनी योजना और \ या डेटा निर्मित करने के लिए एसक्यूएल स्क्रिप्ट उत्पन्न करता है। इन लिपियों तो स्रोत नियंत्रण में रखा जा सकता है।

http://subsonicproject.com/

04/08/2008 को 23:47
का स्रोत उपयोगकर्ता

वोट
5

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

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

इस स्क्रिप्ट के साथ, आप DBUnit या निर्माण स्क्रिप्ट के कुछ प्रकार के साथ एकीकृत कर सकता है, तो यह यह आपके पहले से ही स्वचालित प्रक्रियाओं के साथ में फिट सकता है।

04/08/2008 को 23:28
का स्रोत उपयोगकर्ता

वोट
4

मैं कई परियोजनाओं के लिए दृश्य स्टूडियो में निम्नलिखित डेटाबेस परियोजना संरचना का उपयोग किया है और यह बहुत अच्छी तरह से काम कर रहा है:

डेटाबेस

स्क्रिप्ट बदलें

0.PreDeploy.sql

1.SchemaChanges.sql

2.DataChanges.sql

3.Permissions.sql

स्क्रिप्ट बनाएं

sprocs

कार्य

दृश्य

हमारे निर्माण प्रणाली तो निम्न क्रम में स्क्रिप्ट का निष्पादन द्वारा एक संस्करण अगले करने के लिए से डेटाबेस अद्यतन करता है:

1.PreDeploy.sql

2.SchemaChanges.sql

स्क्रिप्ट फ़ोल्डर बनाएँ की सामग्री

2.DataChanges.sql

3.Permissions.sql

प्रत्येक फ़ाइल के अंत पर अपने कोड जोड़कर एक विशेष बग / सुविधा के लिए अपने परिवर्तन में प्रत्येक डेवलपर जाँच करता है। एक प्रमुख संस्करण पूर्ण और स्रोत नियंत्रण में branched है एक बार, स्क्रिप्ट बदलें फ़ोल्डर में .sql फ़ाइलों की सामग्री को हटाया जाता है।

08/08/2008 को 19:31
का स्रोत उपयोगकर्ता

वोट
4

हम एक बहुत ही सरल लेकिन अभी तक प्रभावी समाधान का उपयोग करें।

नई इंस्टॉल किए जाने के लिए, हम भंडार है जो सभी डीबी स्कीमा, तो निर्माण प्रक्रिया हम इस फ़ाइल का उपयोग डेटाबेस उत्पन्न करने के लिए रखती है में एक metadata.sql फ़ाइल है।

अपडेट के लिए, हम hardcoded सॉफ्टवेयर में अद्यतन जोड़ें। हम इसे हार्डकोडेड हम समस्याओं को सुलझाने पसंद नहीं है इससे पहले कि यह वास्तव में एक समस्या है, और बात इस तरह का अब तक एक समस्या साबित नहीं किया क्योंकि रहते हैं।

इसलिए हमारे सॉफ्टवेयर में हम कुछ इस तरह है:

RegisterUpgrade(1, 'ALTER TABLE XX ADD XY CHAR(1) NOT NULL;');

यदि डेटाबेस संस्करण 1 (जो स्वचालित रूप से बनाया एक तालिका में संग्रहीत किया जाता है) में है यह कोड की जाँच करेगा, अगर यह पुरानी है, फिर कमांड निष्पादित किया जाता है।

भंडार में metadata.sql अद्यतन करने के लिए, हम चलाने इस स्थानीय रूप से अपग्रेड किए जाने और उसके बाद पूरा डेटाबेस मेटाडाटा निकालें।

केवल बात यह है कि हर बार होता है, metadata.sql करने से भूल जाते हैं नहीं है, लेकिन यह एक बड़ी समस्या है क्योंकि निर्माण प्रक्रिया पर परीक्षण करने के लिए अपनी आसान है और यह भी केवल बात यह है कि हो सकता है के साथ एक नया स्थापित करने के लिए है नहीं है एक पुरानी डेटाबेस और पहली बार उपयोग पर अपग्रेड किया।

इसके अलावा हम डाउनग्रेड का समर्थन नहीं करते, लेकिन यह, डिजाइन के द्वारा होता है अगर कुछ एक अद्यतन पर टूट जाता है, हम पिछले संस्करण बहाल और फिर से प्रयास करने से पहले अद्यतन को ठीक।

08/08/2008 को 19:21
का स्रोत उपयोगकर्ता

वोट
3

मैं निर्माण संस्करणों के नाम पर फ़ोल्डर बनाने और उन्नयन और वहाँ में स्क्रिप्ट डाउनग्रेड रख। 1.0.0, 1.0.1 और 1.0.2: उदाहरण के लिए, आप निम्न फ़ोल्डरों हो सकता था। हर एक स्क्रिप्ट है कि आप उन्नयन या संस्करणों के बीच अपने डेटाबेस को डाउनग्रेड करने की अनुमति देता है शामिल हैं।

एक ग्राहक या ग्राहक संस्करण 1.0.1 के साथ एक समस्या के साथ बुलाना चाहिए और आप 1.0.2 का उपयोग कर रहे हैं, डेटाबेस वापस अपने संस्करण के लिए लाने के लिए एक समस्या नहीं होगी।

अपने डेटाबेस में, एक मेज "स्कीमा" जहाँ आप डेटाबेस के वर्तमान संस्करण में डाल बुलाया पैदा करते हैं। फिर एक प्रोग्राम है जो उन्नयन या अपने डेटाबेस डाउनग्रेड कर सकते हैं आप के लिए आसान है के लिए लेखन।

वैसे ही जैसे जॉय ने कहा, यदि आप एक रेल दुनिया में हैं, माइग्रेशन का उपयोग करें। :)

05/08/2008 को 05:36
का स्रोत उपयोगकर्ता

वोट
2

डाटाबेस तैनाती का प्रयास करें - मुख्य रूप से एक जावा उपकरण लेकिन साथ ही php के साथ काम करता है।

19/01/2012 को 02:52
का स्रोत उपयोगकर्ता

वोट
2

मैं जिस तरह से इसे कितना पसंद करते Yii डेटाबेस माइग्रेशन संभालती है। एक माइग्रेशन मूल रूप से लागू करने के लिए एक PHP स्क्रिप्ट है CDbMigrationCDbMigrationएक को परिभाषित करता है upविधि कि माइग्रेशन तर्क होता है। यह भी एक को लागू करने के लिए संभव है downप्रवास के उलट समर्थन करने के लिए विधि। वैकल्पिक रूप से, safeUpया safeDownयह सुनिश्चित करें कि माइग्रेशन एक सौदे के संदर्भ में किया जाता है बनाने के लिए इस्तेमाल किया जा सकता।

Yii के आदेश-पंक्ति उपकरण yiicबना सकते हैं और माइग्रेशन निष्पादित करने के लिए समर्थन शामिल है। माइग्रेशन लागू किया जा सकता है या उलट, एक-एक करके या एक बैच में या तो। एक PHP वर्ग को लागू करने के लिए कोड में एक प्रवास परिणाम बनाना CDbMigration, विशिष्ट एक टाइमस्टैम्प और एक प्रवास नाम उपयोगकर्ता द्वारा निर्दिष्ट के आधार पर नाम दिया है। सभी माइग्रेशन से, जिन्हें डेटाबेस के लिए लागू किया गया एक प्रवास तालिका में जमा हो जाती है।

अधिक जानकारी के लिए देखने के डाटाबेस माइग्रेशन पुस्तिका से लेख।

25/06/2011 को 14:18
का स्रोत उपयोगकर्ता

वोट
2

IMHO माइग्रेशन एक बड़ी समस्या है:

एक संस्करण से ठीक एक और काम करता है को अपग्रेड, लेकिन एक ताजा एक दिया संस्करण स्थापित हमेशा के लिए ले सकता है अगर आप तालिकाओं के सैकड़ों और परिवर्तन का एक लंबा इतिहास (हम करते हैं की तरह) कर रही।

आधारभूत ऊपर वर्तमान संस्करण में (ग्राहकों डेटाबेस के सैकड़ों के लिए) के बाद से डेल्टा के पूरे इतिहास चल रहा है एक बहुत लंबे समय लग सकता है।

12/03/2011 को 15:15
का स्रोत उपयोगकर्ता

वोट
2

MySQL के लिए टॉड एक समारोह स्कीमा कहा जाता है कि आप की तुलना 2 डेटाबेस सिंक्रनाइज़ करने के लिए अनुमति देता है। यह सबसे अच्छा उपकरण मैं अब तक का इस्तेमाल किया है है।

05/02/2011 को 12:08
का स्रोत उपयोगकर्ता

वोट
2

मैं "पटकथा" पक्ष के लिए चींटी (क्रॉस प्लेटफॉर्म) का उपयोग कर सबवर्सन स्रोत भंडार के लिए (क्योंकि यह व्यावहारिक रूप से किसी भी db करने के लिए वहाँ बाहर JDBC के माध्यम से बात कर सकते हैं) और सिफारिश करेंगे। चींटी स्थानीय फ़ाइल पर अपने डाटाबेस "का बैक अप" करने के लिए, परिवर्तन करने से पहले आप alow होगा। 1. बैकअप चींटी 3. के माध्यम से सववर्सन रिपॉजिटरी को चींटी 2. संस्करण नियंत्रण के माध्यम से दाखिल करने के लिए मौजूदा डाटाबेस स्कीमा चींटी के माध्यम से db से नया एसक्यूएल बयान भेज

17/09/2008 को 17:54
का स्रोत उपयोगकर्ता

वोट
2

मेरे वर्तमान पीएचपी परियोजना के लिए हम रेल माइग्रेशन के विचार का उपयोग करें और हम एक माइग्रेशन निर्देशिका जिसमें हम फ़ाइलों शीर्षक "migration_XX.sql" जहां XX प्रवास की संख्या है रखने की है। वर्तमान में इन फ़ाइलों को हाथ द्वारा बनाई गई हैं के रूप में अद्यतन किया जाता है, लेकिन उनके निर्माण आसानी से संशोधित किया जा सकता है।

फिर हम एक स्क्रिप्ट "Migration_watcher" कहा जाता है जो, जैसा कि हम पहले से अल्फा में हैं, वर्तमान में एक नया migration_XX.sql फ़ाइल जहां XX वर्तमान माइग्रेशन संस्करण की तुलना में बड़ा है कि क्या वहाँ हर पृष्ठ लोड और चेक पर चलता है। यदि ऐसा है तो यह डेटाबेस और देखा के खिलाफ सबसे बड़ी संख्या तक सभी migration_XX.sql फ़ाइलें चलाता है! स्कीमा परिवर्तन स्वचालित होते हैं।

आप सिस्टम फेरबदल का एक बहुत आवश्यकता होगी वापस लौटने की क्षमता की आवश्यकता होती है, लेकिन यह आसान है और इस प्रकार अब तक हमारे काफी छोटी टीम के लिए बहुत अच्छी तरह से काम कर रहा है, तो।

23/08/2008 को 13:58
का स्रोत उपयोगकर्ता

वोट
0

वहाँ एक कमांड लाइन है mysql-diff उपकरण है जो डेटाबेस स्कीमा, जहां स्कीमा एक जीवित डेटाबेस या डिस्क पर SQL स्क्रिप्ट किया जा सकता है। यह सबसे स्कीमा प्रवास कार्यों के लिए अच्छा है।

04/11/2009 को 20:43
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more