Sebagai @erfan saif, magento mendapat dukungan multi-rdbms sejak 1.6. Tetapi di dunia nyata, saya hanya tahu backend mysql.
Penting untuk dipahami, bahwa magento dapat memiliki skrip instalasi / peningkatan / data yang berbeda untuk backend yang berbeda. Jika Anda menginginkan Tipe-Indeks khusus yang didukung oleh mysql tetapi tidak oleh standar-SQL Anda dapat mengimplementasikan skrip mysql4-install-1.0.0.php. Jika skrip Anda generik, gunakan install-1.0.0.php
Jika Anda melihat Mage_Core_Model_Resource_Setup saya dapat menemukan dua hal yang menarik:
- Anda dapat memberi nama file Anda (% s -)% s-VERSION. (Php | sql)
- Jika Anda memiliki dua skrip instalasi (tetapi dengan skrip data, skripnya sama (app / code / core / Mage / Core / Model / Resource / Setup.php: 520)) Magento lebih memilih skrip khusus daripada skrip generik (sebagai satu akan berharap)
app / code / core / Mage / Core / Model / Resource / 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;
}
Hati-hati, jika Anda memberi nama skrip Anda, skrip .sql
akan dipanggil langsung ke dalam basis data:
// 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);
Juga, apa yang bisa saya lakukan ketika skrip setup saya tidak berjalan untuk mencari tahu mengapa tidak?
Saya lebih suka die ('sadf') di awal file install / upgrade saya, karena saya bisa menjalankannya berkali-kali jika dipanggil, jadi saya bisa mengecek, apakah semua variabel yang saya atur sudah benar, sebelum ada yang berubah di data. Jika saya melihat 'sadf' di layar, saya tahu, skrip sedang berjalan.
Saya banyak memuat (bukan sadf), sekarang saatnya untuk debug, dua kesalahan standar saya adalah:
- Saya lupa untuk menambahkan skrip ke konfigurasi
- Direktori saya
sql/
lupa, misal sql/install-1.0.0.php
alih-alihsql/my_module_setup/install-1.0.0.php
Dan karena saya pikir cocok di sini, hati-hati dengan nama variabel Anda: http://blog.fabian-blechschmidt.de/articles/file-kills-setup-script.html
UPDATE
@ rouven-rieker menambahkan melalui twitter bahwa data- dan hilang mysql4- ditambahkan di magento 1.6. Jika Anda perlu kompatibilitas mundur hati-hati!