Question

Je me rends compte, vous pouvez utiliser des scripts de configuration pour votre propre module en les déclarant dans le fichier etc / config.xml de votre module dans l'espace <global> comme ceci:

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

Certains modules utilisent le fichier mysql4-install-0.0.1.php alors que d'autres utilisent install-0.0.1.php. Alors, quand dois-je utiliser le mysql4 devant le nom du fichier et quand je ne l'utilise pas?

En outre, que puis-je faire lorsque mon script d'installation ne fonctionne pas pour savoir pourquoi il est pas?

Était-ce utile?

La solution

De Magento 1.6 et vers le haut, vous n'avez pas besoin d'utiliser mysql4 plus en raison du soutien multi-SGBDR ajouté.

Pour savoir pourquoi il ne court pas, vous pouvez vérifier le Exception.log ou system.log, peut-être Magento coudn't trouver votre classe d'installation. Création d'un script d'installation est assez simple cependant.

Consultez également le guide d'Alan tempête: http://alanstorm.com/magento_setup_resources

Autres conseils

saif @erfan, magento a multi-SGBDR SUPPORTEE 1.6. Mais dans le monde réel, je ne connais que MySQL backends.

Il est important de comprendre que magento peut avoir différents installer / mise à niveau / scripts de données pour différents backends. Si vous voulez un indice de type spécial qui est pris en charge par MySQL, mais pas par standard SQL, vous pouvez mettre en place un script mysql4-install-1.0.0.php. Si votre script est générique, utilisez install-1.0.0.php

Si vous jetez un coup d'oeil dans Mage_Core_Model_Resource_Setup je peux trouver deux choses interessting:

  1. Vous pouvez nommer vos fichiers (% s -)% s-VERSION. (Php | sql)
  2. Si vous avez deux scripts d'installation (mais avec des données scripts, il est le même (app / code / core / Mage / Core / Modèle / ressources / Setup.php: 520)) magento préfère le script spécialisé sur le script générique (comme on pouvait s'y attendre)

app / code / core / Mage / Core / Modèle / ressources / 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;
}

Attention, si vous nommez votre .sql script, il est appelé directement dans la base de données:

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

En outre, que puis-je faire lorsque mon script d'installation ne fonctionne pas pour savoir pourquoi il est pas?

Je préfère une matrice ( « SADF ») au début de mon installation / fichier de mise à niveau, parce que je peux exécuter plusieurs fois si elle est appelée, donc je peux vérifier, wether toutes les variables que je jeu sont correctes, avant tout est modifiée dans la base de données. Si je vois le « SADF » sur l'écran, je sais, le script est en cours d'exécution.

Je magento charge (au lieu de la SADF), il est temps de débogage, mes deux erreurs types sont:

  1. J'ai forgotton ajouter le script à la config
  2. J'ai le répertoire dans sql/ oublié, par exemple sql/install-1.0.0.php au lieu de sql/my_module_setup/install-1.0.0.php

Et parce que je pense qu'il convient ici, soyez prudent avec vos noms de variables: http: //blog.fabian-blechschmidt.de/articles/file-kills-setup-script.html

UPDATE @ Rouven-Rieker ajouté via Twitter et mysql4- manquant Data- a été ajouté dans magento 1.6. Si vous avez besoin rétrocompatibilité attention!

Si votre script est en cours d'exécution ne vous devriez également vérifier si correspond à votre version de modules la version de votre configuration script.

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

Si votre script ne fonctionne pas, le numéro de version remise à zéro dans core_resource et flush cache. met en cache les versions Magento à l'avance et il semble manque d'exécuter des scripts de configuration lorsque tous les caches sont activés. Parce que nous travaillons tous avec le cache désactivé, nous ne pouvons le remarquer, mais l'installation sur le site en direct via le téléchargement ne fonctionnera pas si le cache est activé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top