2010-01-22 10 views
5

से प्राप्त करना मैं जेनरेट माइग्रेशन फ़ाइल द्वारा बनाए गए SQL कथन प्राप्त करने का एक तरीका शोध कर रहा हूं। ये Doctrine_Migration_Base बढ़ाते हैं। अनिवार्य रूप से मैं एसक्यूएल को स्क्रिप्ट स्क्रिप्ट के रूप में सहेजना चाहता हूं।एसक्यूएल को एक डॉक्टर माइग्रेशन

निष्पादन पथ मुझे डॉक्टरेट_एक्सपोर्ट पर ले जाता है जिसमें SQL कथन बनाने और उन्हें निष्पादित करने के तरीके हैं। मुझे सिर्फ उनसे पूछने का कोई रास्ता नहीं मिला है। Doctrine_Export में पाए गए निर्यात विधियां केवल Doctrine_Record मॉडल पर संचालित होती हैं, न कि माइग्रेशन स्क्रिप्ट्स।

कमांड लाइन './doctrine विस्थापित संस्करण #' पथ से चला जाता है:

  • Doctrine_Cli :: रन (cmd)
  • Doctrine_Task_Migrate :: setArguments (args)
  • Doctrine_Task_Migrate :: निष्पादित()
  • Doctrine_Migration :: (करने के लिए)
  • Doctrine_Migration_Process :: Doctrine_Export विस्थापित :: विभिन्न ड्रॉप बनाते हैं, तो, एसक्यूएल सम साथ तरीकों को बदल valents।

क्या किसी ने इससे पहले इसका सामना किया है? मैं वास्तव में सिद्धांत आधार फ़ाइलों को बदलना नहीं चाहूंगा। कोई भी मदद बहुत ही सराहनीय होगी।

उत्तर

0

खाता रोब फ़ार्ले के सुझाव में रखते हुए, मैं संशोधित:

  • Doctrine_Core :: विस्थापित
  • Doctrine_Task_Migrate :: निष्पादित

जब निष्पादित विधि वैकल्पिक तर्क 'dryRun' है कहा जाता है जाँच की। यदि सही है तो एक 'Doctrine_Connection_Profiler' उदाहरण बनाया गया है। 'DryRun' मान को 'Doctrine_Core :: माइग्रेट' विधि पर पारित किया जाता है। सत्य के 'dryRun' मान SQL कथन निष्पादित करते समय परिवर्तन को रोलबैक करने की अनुमति देता है। जब विधि वापस आती है, तो प्रोफाइलर को पार्स किया जाता है और गैर-खाली SQL कथन 'migration_version' नहीं सहेजा जाता है और टर्मिनल पर प्रदर्शित होता है।

0

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

+0

दिलचस्प। मैं उसमें देखूंगा और आपसे वापस आऊंगा। मुझे लगता है कि मुझे बेस सिद्धांत फ़ाइलों को संशोधित करना पड़ सकता है क्योंकि उनके सीएलआई कार्यान्वयन की कमी है। एक dryRun विकल्प उपलब्ध है कि Doctrine_Task_Migrate की जांच भी परेशान नहीं करता है। असल में 2 विकल्प जो मैं जा रहा हूं वे हैं: dryRun विकल्प जोड़ें, विवरणों को कैप्चर करने के लिए dryRun और SQL Trace के साथ माइग्रेशन चलाएं। या dryRun विकल्प के साथ, SQL कथन को आउटपुट करने के लिए एक और विकल्प जोड़ें, इसके लिए एक संशोधित Doctrine_Migration_Process फ़ाइल की आवश्यकता होगी, शायद मैं इसे Doctrine_Migration_GetSQL कहूंगा। –

+0

मान्य लगता है। निश्चित रूप से एसक्यूएल ट्रेस आदेश प्राप्त करने का एक अच्छा तरीका है। –