@Erfan सैफ के रूप में, मैगेंटो को 1.6 के बाद से मल्टी-आरडीबीएम का समर्थन मिला। लेकिन वास्तविक दुनिया में, मैं केवल mysql backends को जानता हूं।
यह समझना महत्वपूर्ण है, कि मैगनेटो के पास अलग-अलग बैकेंड के लिए अलग-अलग इंस्टॉल / अपग्रेड / डेटा स्क्रिप्ट हो सकते हैं। यदि आप एक विशेष अनुक्रमणिका-प्रकार चाहते हैं जो कि mysql द्वारा समर्थित है, लेकिन मानक-SQL द्वारा नहीं है तो आप mysql4-install-1.0.0.php स्क्रिप्ट कार्यान्वित कर सकते हैं। यदि आपकी स्क्रिप्ट सामान्य है, तो install-1.0.0.php का उपयोग करें
यदि आप Mage_Core_Model_Resource_Setup पर एक नज़र डालते हैं, तो मुझे दो इंटरसेस्टिंग विकल्प मिल सकते हैं:
- आप अपनी फ़ाइलों (% s -)% s-VERSION का नाम दे सकते हैं। (php | sql)
- यदि आपके पास दो इंस्टॉल स्क्रिप्ट्स हैं (लेकिन डेटा स्क्रिप्ट्स के साथ, यह एक ही है (ऐप / कोड / कोर / मैज / कोर / मॉडल / रिसोर्स / सेटअप.php: 520)) मैगनेटो जेनेरिक स्क्रिप्ट पर विशेष स्क्रिप्ट पसंद करता है (एक के रूप में) उम्मीद करेंगे)
एप्लिकेशन / कोड / कोर / दाना / कोर / मॉडल / संसाधन / Setup.php: 488
$regExpDb = sprintf('#^%s-(.*)\.(php|sql)$#i', $actionType);
$regExpType = sprintf('#^%s-%s-(.*)\.(php|sql)$#i', $resModel, $actionType);
while (false !== ($file = $handlerDir->read())) {
$matches = array();
if (preg_match($regExpDb, $file, $matches)) {
$dbFiles[$matches[1]] = $filesDir . DS . $file;
} else if (preg_match($regExpType, $file, $matches)) {
$typeFiles[$matches[1]] = $filesDir . DS . $file;
}
}
[...]
foreach ($typeFiles as $version => $file) {
$dbFiles[$version] = $file;
}
सावधान रहें, यदि आप अपनी स्क्रिप्ट को नाम देते हैं तो .sql
इसे सीधे डेटाबेस में डाला जाता है:
// app/code/core/Mage/Core/Model/Resource/Setup.php:621
switch ($fileType) {
case 'php':
$conn = $this->getConnection();
$result = include $fileName;
break;
case 'sql':
$sql = file_get_contents($fileName);
if (!empty($sql)) {
$result = $this->run($sql);
इसके अलावा, मैं क्या कर सकता हूं जब मेरी सेटअप स्क्रिप्ट यह पता लगाने के लिए नहीं चल रही है कि यह क्यों नहीं है?
मैं अपनी इंस्टॉल / अपग्रेड फ़ाइल की शुरुआत में एक डाई ('सैडफ') पसंद करता हूं, क्योंकि अगर इसे कहा जाए तो मैं इसे कई बार चला सकता हूं, इसलिए मैं जांच कर सकता हूं कि मेरे द्वारा सेट किए गए सभी वेरिएबल्स सही हैं, इससे पहले कि कुछ भी बदल जाए डेटाबेस। अगर मैं स्क्रीन पर 'सैडफ' देखता हूं, तो मुझे पता है, स्क्रिप्ट चल रही है।
मैं मैग्नेटो लोड करता हूं (काठी के बजाय), यह डिबग करने का समय है, मेरी दो मानक त्रुटियां हैं:
- मुझे स्क्रिप्ट को कॉन्फिगर करने के लिए माफ़ करना है
- मेरे पास निर्देशिका को
sql/
भूल गया है, जैसे sql/install-1.0.0.php
इसके बजायsql/my_module_setup/install-1.0.0.php
और क्योंकि मुझे लगता है कि यह यहाँ फिट बैठता है, अपने चर नामों से सावधान रहें: http://blog.fabian-blechschmidt.de/articles/file-kills-setup-script.html
UPDATE
@ rouven-rieker ने ट्विटर के माध्यम से जोड़ा कि डेटा- और मिसिंग mysql4- को magento 1.6 में जोड़ा गया था। यदि आपको पीछे की ओर संगतता की आवश्यकता है तो सावधान रहें!