pekerjaan cron gagal saat memproses antrian buletin. Saya mendebug panggilan PDO dan sepertinya Magento sedang mencampur bidang di sini. Saya tidak tahu di mana Magento (atau Zend PDO) mendapatkan bidang untuk dipilih, tetapi kelihatannya benar-benar membingungkan:
Sepertinya Magento gagal mendapatkan nama depan pelanggan. Pilihan terakhir adalah:
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
kemudian datang pilih dengan daftar bidang yang tidak ada:
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 untuk permintaan itu: :mt_entity_type_id' => 1
dan:scope_website_id' => 0
ini memunculkan
exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'main_table.data' in 'field list''
karena tabel eav_attribute tidak menyertakan data bidang, masa pakai, kedaluwarsa, atau prioritas.
Inilah jejak tumpukan lengkap:
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}
Semuanya tampak baik-baik saja sampai ada Mage_Customer_Model_Customer->getAttribute('firstname')
panggilan telepon.
Kami tidak memperluas model pelanggan atau menggunakan modul apa pun yang melakukannya, juga mempratinjau buletin berfungsi dengan baik dan mengirimkannya secara manual juga, jadi pengecualian ini hanya terjadi ketika Magento mencoba memproses antrean buletin melalui panggilan cron.
Zend_Debug::dump(Mage::getModel('customer/customer')->getAttribute('firstname'));
dan mendapatkanMage_Customer_Model_Attribute
kembali yang valid . Dapatkah Anda secara manual mengkonfirmasi dalam database yang atributfirstname
dalameav_attribute
dan memiliki hakentity_type_id
darieav_entity_type
?