Mon Extension Magento Installer Le Script Ne Fonctionnera Pas
Je suis en train de créer un script d'installation pour mon extension et pour quelque raison il ne sera pas le script d'installation. L'extension sera présente dans la core_resource table, mais les attributs que je suis en train de créer aura pas de créer.
Je suis assez sûr que le script n'est même pas appelé car j'ai mis un exit() au début et le site a fonctionné très bien.
Voici ce que j'ai dans ma config fichier XML. Celui-ci est placé à l'intérieur de global -> ressources chemin:
<nie_setup>
<setup>
<module>Nie_Nie</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</nie_setup>
Mon script d'installation est la suivante:
$installer = $this;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();
$setup->addAttribute('customer', 'nie_admin', array(
'input' => 'text',
'type' => 'text',
'backend' => '',
'visible' => 0,
'required' => 0,
'user_defined' => 1,
));
$installer->endSetup();
Est là quelque chose d'évident, je suis absent ici qui pourrait être la raison pour laquelle le script ne fonctionnera pas?
- Merci de poster l'emplacement de votre script d'installation
- /app/code/local/Nie/Nie/sql/nie_setup/mysql4-install-0.0.1.php
- Assurez-vous que le cas de votre nom de module à l'intérieur <modules> a le même cas que votre <module> dans vos ressources config. Je viens de tomber sur ce problème moi-même.
Vous devez vous connecter pour publier un commentaire.
Travailler votre chemin à travers cet article pour vous assurer de ne pas avoir tout malentendu sur ce que les ressources du programme d'installation à faire, comment ils fonctionnent et comment vous pouvez les résoudre.
Une fois que vous l'avez fait, de tout ce que vous avez dit sur cette question thread il semble que vous êtes l'obtention de votre ressource "installé", mais que votre script d'installation ne s'exécute. Ma conjecture est que le numéro de version que vous avez utilisé dans
ne correspond pas à la version de votre module
Ceux qui doivent correspondre pour que le script à exécuter. Je pense Magento est assez intelligent pour exécuter les versions précédentes s'il les trouve, mais le code dans les ressources du programme d'installation est le genre c'est dur à suivre, j'ai donc toujours vous assurer qu'ils correspondent.
Peu importe, voici comment vous pouvez voir les fichier(s) magento est d'essayer de s'exécuter lors de l'exécution de votre programme d'installation de la ressource. Supprimez toutes les entrées de
core_resource
liés à votre module. Vider votre cache. Ensuite, trouver les emplacements suivants dans la configuration de la classeapp/code/core/Mage/Core/Model/Resource/Setup.php:
puis les modifier pour ajouter un peu de temporaire de débogage exceptions
Recharger la page et vous obtiendrez le texte de l'exception se plaindre de quoi que Magento peut pas trouver. Cela devrait être suffisant pour vous aider à suivre le script d'installation de Magento est d'essayer de courir, mais à défaut de les trouver. Rappelez-vous seulement de supprimer les de votre module en ligne
core_resource
et de vider votre cache. (Magento caches les modules qui doivent vérifier la présence d'une installation/mise à niveau)Si cela ne fonctionne pas, commencer à creuser dans la logique de
applyAllDataUpdates
et de comprendre pourquoi la classe n'est pas compris votre fichier de programme d'installation..sql
au lieu de.php
pour vos fichiers d'installation si votre juste faire raw SQL sur les mises à jour/installe.Le plus simple et le plus instructif façon de traquer cette erreur est à installation de votre IDE pour déboguer Magento et définir un point d'arrêt dans votre
mysql4-install-0.0.1.php
. Si le point d'arrêt ne vous faites pas toucher, alors vous savez si le problème est dans votre configuration XML. Si le point d'arrêt n'êtes touché, vous pouvez tracer le code pour trouver la source de l'erreur.Il peut vous prendre une demi-journée pour l'installation, mais de vivre de débogage de Magento est de loin la meilleure façon d'apprendre et de comprendre le code. Faites-vous une faveur, faire de l'investissement.
Lorsque j'ai rencontré ce problème, j'ai en fait eu pour désactiver le cache. Simplement de rinçage n'a pas d'aide pour quelque raison que ce soit.
Comme par Magento De La Base De Connaissances vous pouvez essayer, y compris un
<class>
balise dans votre<setup>
. De cette façon vous pouvez vous assurer de la bonne configuration de modèle est utilisé et (si elle obtient de cette mesure) adopte le modèle de votre script d'installation en niant la nécessité de créer un$setup
manuellement.Vérifier les permissions du script d'installation et le répertoire, il est en. Je trouve parfois la suppression de l'enregistrement à partir de
core_resources
aide à démarrer le processus trop.Vous pouvez vérifier dans Magento qui les modules sont chargés, et la version de ce module est chargé:
app/code/core/Mage/Core/Model/Resource/Setup.php
__construct()
À la fin de la fonction écrire:
Mage::log($modName);
Mage::log($this->_moduleConfig);
Il va enregistrer tous les modules chargés avec leur numéro de version. Ici, vous pouvez vérifier si votre module est chargé ou pas.
Vous devez changer la version de votre module un point vers le haut, pour faire de votre script de mise à jour de l'exécuter.
Si cette version est égale à la ressource version de
core_resources
table script de mise à niveau ne sera pas execute. Et la version doit correspondre au nom de votre script de mise à niveauNous avons eu le même problème pour notre magasin http://www.looxis.de
Pour mettre à jour une extension que nous avons en cours d'utilisation nous avons transféré tous les fichiers via FTP, mais la base de données ne serait pas de mise à jour de lui-même après l'effacement du cache. Si la mise à jour de l'extension de l'exécution a échoué, nous n'avons pas à vous connecter dans le backend.
La recherche d'une solution nous avons trouvé cette page.
Le problème, c'est que nous avons installé une version plus récente du module quelques semaines avant, qui a également produit des erreurs en raison d'un conflit avec d'autres modules, nous avons donc transféré partiellement à partir de notre base de données de sauvegarde des tables et nous avons également mis à dos les anciens fichiers. tout était à nouveau au travail,
quand nous avons essayé d'nouvellement mise à jour du module, qui est maintenant compatible avec les autres extension (conflit a été supprimée) la mise à jour sql script ne s'exécute pas.
Cela était dû à la table "core_resources." dans les il y, le module numéro de version a été définie à la version la plus récente que nous avions installé semaines avant donc magento ne reconnaissent pas qu'une nouvelle mise à jour a été effectuée de nouveau, il a assumé la version la plus récente était déjà là.
Nous avons modifié manuellement le numéro de version à une version inférieure, et boom, le script de mise à niveau lancé et tout fonctionnait bien!
Assurez-vous de vérifier votre application fichier/etc/modules, assurez-vous que le nom de votre module est exact et que les codepool est précisément spécifié.