Me doy cuenta de que puede usar scripts de configuración para su propio módulo declarándolos en el archivo etc / config.xml de su módulo dentro del <global>
espacio de esta manera:
<resources>
<catalog_setup>
<setup>
<module>Mage_Catalog</module>
<class>Mage_Catalog_Model_Resource_Setup</class>
</setup>
</catalog_setup>
</resources>
Algunos módulos usan el archivo mysql4-install-0.0.1.php
mientras que otros lo usan install-0.0.1.php
. Entonces, ¿cuándo uso el mysql4 delante del nombre del archivo y cuándo no lo uso?
Además, ¿qué puedo hacer cuando mi script de configuración no se está ejecutando para descubrir por qué no?
magento-1
configuration
sql
installation
setup
mpaepper
fuente
fuente
Respuestas:
Desde Magento 1.6 y versiones posteriores, ya no necesita usar mysql4 debido a la compatibilidad con múltiples RDBMS.
Para averiguar por qué no se está ejecutando, puede consultar el archivo exception.log o system.log, tal vez Magento no pueda encontrar su clase de configuración. Sin embargo, crear un script de instalación es bastante sencillo.
Consulte también la guía de Alan Storm: http://alanstorm.com/magento_setup_resources
fuente
Como @erfan saif, magento obtuvo soporte multi-rdbms desde 1.6. Pero en el mundo real, solo conozco backends mysql.
Es importante comprender que Magento puede tener diferentes scripts de instalación / actualización / datos para diferentes backends. Si desea un tipo de índice especial que sea compatible con mysql pero no con SQL estándar, puede implementar un script mysql4-install-1.0.0.php. Si su script es genérico, use install-1.0.0.php
Si echas un vistazo a Mage_Core_Model_Resource_Setup, puedo encontrar dos cosas interesantes:
app / code / core / Mage / Core / Model / Resource / Setup.php: 488
Tenga cuidado, si nombra su script
.sql
, se invoca directamente en la base de datos:Prefiero un dado ('sadf') al comienzo de mi archivo de instalación / actualización, porque puedo ejecutarlo varias veces si se llama, por lo que puedo verificar, si todas las variables que configuro son correctas, antes de que algo cambie la base de datos. Si veo el 'sadf' en la pantalla, lo sé, el script se está ejecutando.
Realizo cargas (en lugar de sadf), es hora de depurar, mis dos errores estándar son:
sql/
olvidado, por ejemplo, ensql/install-1.0.0.php
lugar desql/my_module_setup/install-1.0.0.php
Y como creo que encaja aquí, tenga cuidado con los nombres de sus variables: http://blog.fabian-blechschmidt.de/articles/file-kills-setup-script.html
ACTUALIZACIÓN @ rouven-rieker agregó a través de Twitter que los datos, y mysql4 faltante, se agregaron en magento 1.6. Si necesita compatibilidad con versiones anteriores, ¡tenga cuidado!
fuente
Si su script no se está ejecutando, también debe verificar si la versión de sus módulos coincide con la versión de su script de configuración.
fuente
Si su script no se está ejecutando, restablezca el número de versión en core_resource y vacíe la memoria caché. Magento almacena en caché las versiones por adelantado, parece y falla ejecutar scripts de configuración cuando todos los cachés están habilitados. Debido a que todos trabajamos con el caché deshabilitado, es posible que no nos demos cuenta de esto, pero la instalación en el sitio en vivo a través de la carga no funcionará si el caché está habilitado.
fuente