Der Cron-Job schlägt fehl, wenn die Newsletter-Warteschlange verarbeitet wird. Ich habe die PDO-Aufrufe debuggt und es scheint, als würde Magento hier Felder durcheinander bringen. Ich habe keine Ahnung, woher Magento (oder Zend PDO) die Felder zur Auswahl hat, aber es sieht völlig durcheinander aus:
Es scheint, als würde Magento den Vornamen des Kunden nicht finden. Die letzten Auswahlen sind:
SELECT
eav_entity_type
.* FROM eav_entity_type
WHERE (eav_entity_type
.entity_type_code
='customer')
DESCRIBE
customer_eav_attribute
DESCRIBE
customer_eav_attribute_website
Dann kommt ein Select mit einer Feldliste, die nicht existiert:
SELECT
main_table
.data
, main_table
.lifetime
, main_table
.expire
, main_table
.priority
, additional_table
.attribute_id
, additional_table
.is_visible
, additional_table
.input_filter
, additional_table
.multiline_count
, additional_table
.validate_rules
, additional_table
.is_system
, additional_table
.sort_order
, additional_table
.data_model
, scope_table
.website_id
AS scope_website_id
, scope_table
.is_visible
AS scope_is_visible
, scope_table
.multiline_count
AS scope_multiline_count
FROM eav_attribute
AS main_table
INNER JOIN customer_eav_attribute
AS additional_table
ON additional_table.attribute_id = main_table.attribute_id
LEFT JOIN customer_eav_attribute_website
AS scope_table
ON scope_table.attribute_id = main_table.attribute_id AND scope_table.website_id = :scope_website_id WHERE (main_table.entity_type_id = :mt_entity_type_id)
Parameter für diese Abfrage: :mt_entity_type_id' => 1
und:scope_website_id' => 0
das wirft auf
exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'main_table.data' in 'field list''
da die Tabelle eav_attribute keine Felder data, lifetime, expire oder priority enthält.
Hier ist der komplette Stack-Trace:
Stack trace:
0 /usr/www/users/weartb/shop/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
1 /usr/www/users/weartb/shop/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
2 /usr/www/users/weartb/shop/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
3 /usr/www/users/weartb/shop/lib/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
4 /usr/www/users/weartb/shop/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT `main_ta...', Array)
5 /usr/www/users/weartb/shop/lib/Varien/Db/Adapter/Pdo/Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('SELECT `main_ta...', Array)
6 /usr/www/users/weartb/shop/lib/Zend/Db/Adapter/Abstract.php(737): Varien_Db_Adapter_Pdo_Mysql->query('SELECT `main_ta...', Array)
7 /usr/www/users/weartb/shop/lib/Varien/Data/Collection/Db.php(734): Zend_Db_Adapter_Abstract->fetchAll('SELECT `main_ta...', Array)
8 /usr/www/users/weartb/shop/app/code/core/Mage/Core/Model/Resource/Db/Collection/Abstract.php(521): Varien_Data_Collection_Db->_fetchAll('SELECT `main_ta...', Array)
9 /usr/www/users/weartb/shop/app/code/core/Mage/Eav/Model/Config.php(356): Mage_Core_Model_Resource_Db_Collection_Abstract->getData()
10 /usr/www/users/weartb/shop/app/code/core/Mage/Eav/Model/Config.php(478): Mage_Eav_Model_Config->_initAttributes(Object(Mage_Eav_Model_Entity_Type))
11 /usr/www/users/weartb/shop/app/code/core/Mage/Eav/Model/Entity/Abstract.php(512): Mage_Eav_Model_Config->getEntityAttributeCodes(Object(Mage_Eav_Model_Entity_Type), Object(Mage_Customer_Model_Customer))
12 /usr/www/users/weartb/shop/app/code/core/Mage/Customer/Model/Customer.php(340): Mage_Eav_Model_Entity_Abstract->loadAllAttributes(Object(Mage_Customer_Model_Customer))
13 /usr/www/users/weartb/shop/app/code/core/Mage/Customer/Model/Customer.php(354): Mage_Customer_Model_Customer->getAttributes()
14 /usr/www/users/weartb/shop/app/code/core/Mage/Newsletter/Model/Resource/Subscriber/Collection.php(134): Mage_Customer_Model_Customer->getAttribute('firstname')
15 /usr/www/users/weartb/shop/app/code/core/Mage/Newsletter/Model/Queue.php(191): Mage_Newsletter_Model_Resource_Subscriber_Collection->showCustomerInfo()
16 [internal function]: Mage_Newsletter_Model_Queue->sendPerSubscriber(20)
17 /usr/www/users/weartb/shop/lib/Varien/Data/Collection.php(466): call_user_func_array(Array, Array)
18 /usr/www/users/weartb/shop/app/code/core/Mage/Newsletter/Model/Observer.php(70): Varien_Data_Collection->walk('sendPerSubscrib...', Array)
19 [internal function]: Mage_Newsletter_Model_Observer->scheduledSend(Object(Mage_Cron_Model_Schedule))
20 /usr/www/users/weartb/shop/app/code/core/Mage/Cron/Model/Observer.php(325): call_user_func_array(Array, Array)
21 /usr/www/users/weartb/shop/app/code/core/Mage/Cron/Model/Observer.php(72): Mage_Cron_Model_Observer->_processJob(Object(Mage_Cron_Model_Schedule), Object(Mage_Core_Model_Config_Element))
22 /usr/www/users/weartb/shop/app/code/core/Mage/Core/Model/App.php(1338): Mage_Cron_Model_Observer->dispatch(Object(Varien_Event_Observer))
23 /usr/www/users/weartb/shop/app/code/core/Mage/Core/Model/App.php(1317): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Cron_Model_Observer), 'dispatch', Object(Varien_Event_Observer))
24 /usr/www/users/weartb/shop/app/Mage.php(448): Mage_Core_Model_App->dispatchEvent('default', Array)
25 /usr/www/users/weartb/shop/cron.php(84): Mage::dispatchEvent('default')
26 {main}
Alles scheint in Ordnung bis zum Mage_Customer_Model_Customer->getAttribute('firstname')
Anruf.
Wir haben das Kundenmodell nicht erweitert oder Module verwendet, die dies tun. Auch die Vorschau des Newsletters funktioniert einwandfrei und der manuelle Versand funktioniert ebenfalls. Diese Ausnahme tritt also nur auf, wenn Magento versucht, die Newsletter-Warteschlange über den Cron-Aufruf zu verarbeiten.
quelle
Zend_Debug::dump(Mage::getModel('customer/customer')->getAttribute('firstname'));
und bekomme eine gültigeMage_Customer_Model_Attribute
zurück. Können Sie manuell in der Datenbank bestätigen , dass ein Attributfirstname
in isteav_attribute
und hat das Recht ,entity_type_id
auseav_entity_type
?Antworten:
Ich denke, Sie haben die Kerndatei app / code / core / Mage / Newsletter / Model / Resource / Subscriber / Collection.php geändert
Bitte überprüfen Sie die showCustomerInfo () -Funktion in der Nähe der Zeile 130. Es sollte sein:
Warum denke ich so?
In Ihrem Fehlerprotokoll wird angezeigt, um welche Erweiterungen oder Mage- / lokalen Dateien es sich nicht handelt.
Die Standard-SQL-Abfrage für diese Magento-Aktion enthält keinen Teil 'main_table.data, main_table.lifetime, main_table.expire, main_table.priority'.
quelle
Wenn Sie Ihren Stack-Trace durchlaufen, sollte Ihr SQL ungefähr so aussehen:
Ich kann nicht scheinen, die unbekannten Spalten überall in Magento zu finden, aber ich habe eine hinterhältige Fealing dies hat etwas mit Sessions / Cache zu tun, aber nicht 100% sicher. Haben Sie Redis vielleicht aktiviert? Wenn ja, deaktivieren und leeren Sie den Cache und sehen Sie, was das Ergebnis ist.
quelle