@Erfan saif olarak, magento 1,6'dan beri multi-rdbms desteğini aldı. Ama gerçek dünyada sadece mysql arka uçları biliyorum.
Magento'nun farklı arka uçlar için farklı yükleme / yükseltme / veri komut dosyalarına sahip olabileceğini anlamak önemlidir. Eğer mysql tarafından desteklenen, ancak standart-SQL tarafından desteklenmeyen özel bir İndeks Tipi istiyorsanız, bir mysql4-install-1.0.0.php betiğini uygulayabilirsiniz. Komut dosyanız genelse, install-1.0.0.php dosyasını kullanın.
Mage_Core_Model_Resource_Setup'a bakarsanız iki ilginç şey bulabilirim:
- Dosyalarınızı adlandırabilirsiniz (% s -)% s-VERSION. (Php | sql)
- İki yükleme komut dosyanız varsa (ancak veri komut dosyalarıyla aynıysa (app / code / core / Mage / Çekirdek / Model / Kaynak / Kurulum.php: 520)) magento, özel komut dosyasını genel komut dosyasının üzerine seçer (biri olarak beklerdim)
Uygulama / kod / çekirdek / Mage / çekirdek / Modeli / kaynak / 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;
}
Dikkat edin, eğer betiğinizi .sql
adlandırırsanız, doğrudan veritabanına çağrılır:
// 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);
Ayrıca, kurulum betiğimin neden olmadığını bulmak için çalışmadığında ne yapabilirim?
Kurulum / yükseltme dosyamın başında bir die ('sadf') tercih ediyorum, çünkü çağrılırsa birden çok kez çalıştırabilirim, böylece bir şey değiştirilmeden önce, ayarladığım tüm değişkenlerin doğru olup olmadığını kontrol edebilirim. veritabanı. Ekranda 'sadf' görürsem, komut dosyası çalışıyordur.
Ben yüklerim (sadf yerine), hata ayıklama zamanı, iki standart hatam:
- Komut dosyasına config eklemeyi unuttum.
- Ben dizini var
sql/
unutulmuş, mesela sql/install-1.0.0.php
yerinesql/my_module_setup/install-1.0.0.php
Ve buraya uyduğunu düşündüğüm için değişken isimlerinize dikkat edin: http://blog.fabian-blechschmidt.de/articles/file-kills-setup-script.html
UPDATE
@ rouven-rieker, magento 1.6'ya veri ve kayıp mysql4'ün eklendiğini twitter yoluyla ekledi. Geriye doğru uyumluluk gerekiyorsa dikkatli olun!