Pregunta

Me doy cuenta, puede utilizar scripts de configuración para su propio módulo, al declarar en el archivo etc / config.xml del módulo dentro del espacio <global> como esto:

<resources>
    <catalog_setup>
        <setup>
            <module>Mage_Catalog</module>
            <class>Mage_Catalog_Model_Resource_Setup</class>
        </setup>
    </catalog_setup>
</resources>

Algunos módulos a continuación, utilizar el archivo mysql4-install-0.0.1.php mientras que otros utilizan install-0.0.1.php. Así que cuando puedo utilizar la MySQL4 delante del nombre de archivo y cuándo no lo uso?

Además, ¿qué puedo hacer cuando mi script de configuración no está en marcha para averiguar por qué no lo es?

¿Fue útil?

Solución

A partir de Magento 1,6 y hacia arriba que no es necesario el uso MySQL4 más debido al apoyo de múltiples RDBMS añadido.

Para saber por qué no se está ejecutando, se puede comprobar el exception.log o system.log, tal vez Magento baremo no encontrar su clase de instalación. Creación de un script de instalación es sin embargo bastante sencillo.

También puedes ver guía de Alan tormenta: http://alanstorm.com/magento_setup_resources

Otros consejos

Como Saif @erfan, Magento tiene múltiples RDBMS apoyan desde 1,6. Pero en el mundo real, sé backends única MySQL.

Es importante entender, que puede tener diferentes de Magento instalar / actualizar / scripts de datos para diferentes sistemas de apoyo. Si quieres un índice de tipo especial que es apoyado por MySQL, pero no por la norma-SQL se puede implementar un script MySQL4-instalación-1.0.0.php. Si el guión es genérico, utilización instalar-1.0.0.php

Si se echa un vistazo a Mage_Core_Model_Resource_Setup puedo encontrar dos cosas interessting:

  1. Se puede nombrar a sus archivos (% s -)% s-VERSION. (Php | sql)
  2. Si tiene dos scripts de instalación (pero con guiones de datos, es el mismo (app / código / core / Mago / Core / modelo / Recursos / setup.php: 520)) Magento prefiere el guión especializada durante la secuencia de comandos genérico (como cabría esperar)

app / código / core / Mago / Core / modelo / 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;
}

Ten cuidado, si el nombre de su .sql guión se invoca directamente en la base de datos:

// 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);

Además, ¿qué puedo hacer cuando mi script de configuración no está en marcha para averiguar por qué no lo es?

Yo prefiero un troquel ( 'sadf') al principio de mi archivo de instalación / actualización, ya que se puede ejecutar varias veces si se le llama, por lo que puedo comprobar, wether todas las variables que establezca son correctos, antes de nada se cambia en la base de datos. Si veo el 'sadf' en la pantalla, lo sé, se ejecuta el script.

Magento cargas (en lugar de la SADF), es el momento de depurar, mis dos errores estándar son:

  1. he forgotton añadir la secuencia de comandos para la configuración
  2. Tengo el directorio en el sql/ olvidado, por ejemplo, sql/install-1.0.0.php en lugar de sql/my_module_setup/install-1.0.0.php

Y porque creo que encaja aquí, tener cuidado con sus nombres de variables: http: //blog.fabian-blechschmidt.de/articles/file-kills-setup-script.html

Actualizar @ Rouven-Rieker añadió a través de twitter que falta de datos y mysql4- se añadió en Magento 1.6. Si necesita compatibilidad hacia atrás tenga cuidado!

Si la secuencia de comandos no se está ejecutando también debe comprobar si su versión módulos coincide con la versión de la configuración de su script.

<modules>
    <Your_Module>
        <version>0.0.1</version>
    </Your_Module>
</modules> 

Si el guión no está en funcionamiento, el número de versión de reposición en core_resource y la memoria caché ras. Magento almacena en caché versiones de antemano lo que parece y se pierde por ejecutar scripts de configuración cuando se habilitan todos los cachés. Debido a que todo el trabajo con caché deshabilitada, es posible que no cuenta de esto, pero la instalación en el sitio en vivo a través de carga no funcionará si está activada la caché.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top