ในฐานะ @erfan saif วีโอไอพีได้รับการสนับสนุนหลาย rdbms ตั้งแต่ 1.6 แต่ในโลกแห่งความเป็นจริงฉันรู้เพียงแบ็กเอนด์ mysql
สิ่งสำคัญคือต้องเข้าใจว่าวีโอไอพีสามารถมีสคริปต์การติดตั้ง / อัปเกรด / ข้อมูลที่ต่างกันสำหรับแบ็กเอนด์ที่ต่าง หากคุณต้องการดัชนีชนิดพิเศษซึ่งสนับสนุนโดย mysql แต่ไม่ใช่โดย SQL มาตรฐานคุณสามารถใช้สคริปต์ mysql4-install-1.0.0.php หากสคริปต์ของคุณเป็นแบบทั่วไปให้ใช้ install-1.0.0.php
หากคุณดูที่ Mage_Core_Model_Resource_Setup ฉันสามารถค้นหาสิ่งที่ขัดขวางสองสิ่ง:
- คุณสามารถตั้งชื่อไฟล์ของคุณ (% s -)% s-VERSION (php | sql)
- หากคุณมีสองสคริปต์ติดตั้ง (แต่มีสคริปต์ข้อมูลมันจะเหมือนกัน (app / code / core / Mage / Core / รุ่น / ทรัพยากร / Setup.php: 520)) magento ชอบสคริปต์พิเศษมากกว่าสคริปต์ทั่วไป (เป็นหนึ่ง จะคาดหวัง)
app / รหัส / core / Mage / หลัก / รุ่น / ทรัพยากร / 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);
นอกจากนี้ฉันควรทำอย่างไรเมื่อสคริปต์การตั้งค่าของฉันไม่ทำงานเพื่อหาสาเหตุที่ไม่
ฉันชอบ die ('sadf') ที่จุดเริ่มต้นของไฟล์ติดตั้ง / อัปเกรดของฉันเพราะฉันสามารถเรียกใช้ได้หลายครั้งหากมีการเรียกใช้ดังนั้นฉันสามารถตรวจสอบได้ว่าตัวแปรทั้งหมดที่ฉันตั้งไว้นั้นถูกต้องหรือไม่ ฐานข้อมูล หากฉันเห็น 'sadf' บนหน้าจอฉันรู้ว่าสคริปต์กำลังทำงาน
ฉันโหลดวีโอไอพี (แทน sadf) ถึงเวลาที่จะทำการดีบักข้อผิดพลาดมาตรฐานสองข้อของฉันคือ:
- ฉันลืมเพิ่มสคริปต์ลงในการกำหนดค่า
- ฉัน
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
อัปเดต
@ rouven-rieker เพิ่มผ่านทาง Twitter ว่าข้อมูล - และ mysql4- หายไปถูกเพิ่มใน magento 1.6 หากคุณต้องการความเข้ากันได้ย้อนหลังระวัง!