công việc định kỳ không thành công khi xử lý hàng đợi bản tin. Tôi đã gỡ lỗi các cuộc gọi PDO và có vẻ như Magento đang trộn lẫn các trường ở đây. Tôi không biết Magento (hoặc Zend PDO) lấy các trường để chọn từ đâu, nhưng có vẻ như hoàn toàn lẫn lộn:
Có vẻ như Magento thất bại trong việc lấy tên của khách hàng. Các lựa chọn cuối cùng là:
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
sau đó đến một lựa chọn với một danh sách trường không tồn tại:
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)
Các tham số cho truy vấn đó: :mt_entity_type_id' => 1và:scope_website_id' => 0
điều này làm tăng
exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'main_table.data' in 'field list''
bởi vì bảng eav_attribution không bao gồm dữ liệu trường, thời gian tồn tại, hết hạn hoặc mức độ ưu tiên.
Đây là dấu vết ngăn xếp hoàn chỉnh:
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}
Mọi thứ có vẻ ổn cho đến khi Mage_Customer_Model_Customer->getAttribute('firstname')gọi.
Chúng tôi đã không mở rộng mô hình khách hàng hoặc sử dụng bất kỳ mô-đun nào làm như vậy, đồng thời xem trước bản tin cũng hoạt động tốt và gửi nó theo cách thủ công, vì vậy ngoại lệ này chỉ xảy ra khi Magento cố gắng xử lý hàng đợi bản tin thông qua cuộc gọi cron.
Zend_Debug::dump(Mage::getModel('customer/customer')->getAttribute('firstname'));và lấyMage_Customer_Model_Attributelại hợp lệ . Bạn có thể xác nhận thủ công trong cơ sở dữ liệu rằng một thuộc tínhfirstnameđang ởeav_attributevà có quyềnentity_type_idtừeav_entity_typekhông?