Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je suis sur une boutique Magento qui utilise donc ZF (que je ne maîtrise pas) et j'ai une erreur lors du passage du cron. Malheureusement, l'erreur générée ne m'aide que partiellement car elle est coupée.
N'ayant pas obtenu de réponse sur un forum Magento, je me dis que cela est peut-être assez standard au ZF...
Donc, dans les rapports d'erreurs, les lignes sont tronquées. On a le début, la fin, mais une partie est remplacée par des ...
Voici l'erreur :
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE (schedule_id='103285')' at line 1
et le détail c'est :
#0 /home/boutique/www/lib/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#1 /home/boutique/www/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#2 /home/boutique/www/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('UPDATE `cron_sc...', Array)
#3 /home/boutique/www/lib/Varien/Db/Adapter/Pdo/Mysql.php(337): Zend_Db_Adapter_Pdo_Abstract->query('UPDATE `cron_sc...', Array)
#4 /home/boutique/www/lib/Zend/Db/Adapter/Abstract.php(632): Varien_Db_Adapter_Pdo_Mysql->query('UPDATE `cron_sc...', Array)
#5 /home/boutique/www/app/code/core/Mage/Core/Model/Mysql4/Abstract.php(402): Zend_Db_Adapter_Abstract->update('cron_schedule', Array, 'schedule_id='10...')
#6 /home/boutique/www/app/code/core/Mage/Core/Model/Abstract.php(318): Mage_Core_Model_Mysql4_Abstract->save(Object(Mage_Cron_Model_Schedule))
#7 /home/boutique/www/app/code/core/Mage/Cron/Model/Observer.php(121): Mage_Core_Model_Abstract->save()
#8 /home/boutique/www/app/code/core/Mage/Core/Model/App.php(1272): Mage_Cron_Model_Observer->dispatch(Object(Varien_Event_Observer))
#9 /home/boutique/www/app/code/core/Mage/Core/Model/App.php(1253): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Cron_Model_Observer), 'dispatch', Object(Varien_Event_Observer))
#10 /home/boutique/www/app/Mage.php(416): Mage_Core_Model_App->dispatchEvent('default', Array)
#11 /home/boutique/www/cron.php(44): Mage::dispatchEvent('default')
#12 {main}
Y'a-t'il un moyen d'avoir des lignes complètes ? J'ai vraiment besoin de connaître la requête SQL mais dans le cas présent je ne sais comment faire...
Merci !
Hors ligne
Bonjour,
Dans le message d'erreur, tu n'auras pas la requête complète, le bout de requête vient directement de mysql.
Dans la pile d'erreur, il y a peut-être moyen : il faut intercepter l'exception et réafficher complètement la backtrace. Un truc du genre :
[lang=php] try { // là où est lancé le front controller de magento, mais je ne connais pas magento... } catch (Exception $e) { $backTrace = debug_backtrace(); throw new Exception("backtrace=".print_r($backTrace, true)); }
PS : ça risque de ne pas être hyper lisible, mais bon, t'as toutes les infos possibles
A+, Philippe
Hors ligne
En fait je ne pensais pas au message d'erreur MySQL, mais à la pile d'erreur , lignes #2 #3 #4.
Le fait de n'avoir qu'une partie de la requête est-ce à ton avis une limitation Magento Magento ou ZF ?
Si ça vient de ZF, y'a-t-il moyen de changer la longueur maximum de la ligne, d'une façon générale, ce serait plus utile.
Merci
Hors ligne
Euh, oui, le code que j'ai écrit au dessus . debug_backtrace() te renvoie la pile d'erreur, mais avec les données complètes (c'est un gros tableau associatif)
Donc si tu interceptes l'exception originale et que tu récupère l'ensemble de la backtrace, tu récupères les messages complets de chaque ligne.
A+, Philippe
Hors ligne