मैं अपने इन-डेवलपमेंट प्रोपेल प्रोजेक्ट पर पहली बार माइग्रेशन का उपयोग करने की कोशिश कर रहा हूं (इसलिए मुझे 15 एमबी डेटा दोबारा डालने की ज़रूरत नहीं है), लेकिन कुछ कठिनाइयों का सामना करना पड़ रहा है। मैंने अपनी स्कीमा में बदलाव किए और propel-gen diff
चलाया। मुझे पहली बार एक त्रुटि मिली कि यह मेरी buildtime-conf.xml
फ़ाइल का पता नहीं लगा सका। मैंने अभी तक एक नहीं बनाया है (क्योंकि यह आवश्यक नहीं था), लेकिन पढ़ें कि संरचना runtime-conf.xml
जैसी ही होनी चाहिए। मैंने runtime-conf.xml
से buildtime-conf.xml
पर प्रतिलिपि बनाई। और अब निम्न त्रुटि प्राप्त:पोस्टग्रेएसक्यूएल माइग्रेशन एडाप्टर को खोजने में असमर्थ
[propel-sql-diff] Reading databases structure...
[phingcall] Unable to find adapter for datasource [project].
Execution of target "sql-diff" failed for the following reason: /var/www/project/vendor/propel/propel1/generator/build-propel.xml:317:26: Execution of the target buildfile failed. Aborting.
[phing] /var/www/project/vendor/propel/propel1/generator/build-propel.xml:317:26: Execution of the target buildfile failed. Aborting.
मेरे क्रम और buildtime फ़ाइलों की तरह लग रही है:
<?xml version="1.0" encoding="UTF-8"?>
<database name="project" defaultIdMethod="native">
<table schema="accounts" name="accounts" phpName="Account" package="accounts">
<column />
</table>
</database>
मैं बदल रहा है की कोशिश की:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<propel>
<datasources default="project">
<datasource id="project">
<adapter>pgsql</adapter>
<connection>
<dsn>pgsql:host=###.###.###.###;dbname=database</dsn>
<user>USER</user>
<password>PASS</password>
</connection>
</datasource>
</datasources>
</propel>
</config>
मेरे स्कीमा इस की तर्ज पर है बिल्डटाइम-conf <datasource id="testing">
और त्रुटि Unable to find adapter for datasource [testing]
में बदल दी गई। तो त्रुटि वास्तविक बिल्डटाइम-conf फ़ाइल (स्कीमा नहीं) में है, जहां तक मैं कह सकता हूं। मैंने सोचा कि शायद प्रोपेल PostgreSQL के एडाप्टर को नहीं ढूंढ सका (भले ही यह मेरे रनटाइम-कॉन्फ में ठीक काम करता है), इसलिए मैंने अपने एडाप्टर को mysql
पर बदलने की कोशिश की। यह एडाप्टर त्रुटि खोजने में असमर्थ के साथ आया था।
मैं पूरी तरह खो गया हूं, विचार?
अद्यतन: तो मैं /Propel/runtime/lib/Propel.php
में जाकर लाइन जहां Unable to find adapter
अपवाद उत्पन्न हुआ था पता लगाने में सक्षम था। मैंने मैन्युअल रूप से लाइन self::$configuration['datasources'][$name]['adapter'] = 'pgsql'
जोड़कर चर परिभाषित किया है और यह काम करता है। यह स्पष्ट रूप से अभी के लिए उपयोगी नहीं है, क्योंकि मैं इस परिवर्तन को फिर से किए बिना प्रोपेल को अपडेट नहीं कर पाऊंगा। मैंने Propel.php में self::$configuration
डंप किया और यह NULL
है, कोई विचार क्यों?
self::$configuration['datasources'][$name]['adapter'] = 'mysql';
निम्नलिखित त्रुटि में परिणाम:
Indirect modification of overloaded element of PropelConfiguration has no effect
है कि
आप किस संस्करण को चल रहे हैं? यदि यह 1.6 है, तो यह अभी भी समर्थन में है - मैं एक बग फाइल करता हूं। ऐसा लगता है कि माइग्रेशन सामान कनेक्शन शुरू नहीं कर रहा है, हालांकि मैं वास्तव में आंतरिक रूप से नहीं जानता हूं। साथ ही, यदि आप एक पूर्ण schema.xml और build.properties को ज़िप करना चाहते हैं, तो मैं आपकी मशीन पर माइग्रेशन आज़माउंगा यदि आप चाहें (अभी तक कोशिश नहीं की है, लेकिन इसके आसपास जाने के लिए अर्थ रखें!)। – halfer