क्रोन निष्पादित करते समय पीडीओ अपवाद: समाचार पत्र कतार विफल रहता है ('फ़ील्ड सूची में अज्ञात कॉलम' main_table.data ')


15

समाचार पत्र कतार को संसाधित करते समय क्रॉन नौकरी विफल हो जाती है। मैंने पीडीओ कॉल को डिबग किया और ऐसा लगता है जैसे मैगेंटो यहां खेतों को मिला रहा है। मेरे पास कोई सुराग नहीं है जहां मैगेंटो (या ज़ेंड पीडीओ) से चयन करने के लिए फ़ील्ड मिलते हैं, लेकिन यह पूरी तरह से मिश्रित दिखता है:

ऐसा लगता है कि ग्राहक का पहला नाम प्राप्त करने पर Magento विफल रहता है। अंतिम चयन हैं:

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

फिर एक फ़ील्ड सूची के साथ एक चयन आता है जो मौजूद नहीं है:

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)

उस क्वेरी के लिए पैरामीटर: :mt_entity_type_id' => 1और:scope_website_id' => 0

यह उठता है

exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'main_table.data' in 'field list''

क्योंकि eav_attribute तालिका में फ़ील्ड डेटा, जीवनकाल, समय सीमा या प्राथमिकता शामिल नहीं है।

यहां देखें पूरा स्टैक ट्रेस:

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}

Mage_Customer_Model_Customer->getAttribute('firstname')कॉल आने तक सब कुछ ठीक लगता है ।

हमने ग्राहक मॉडल का विस्तार नहीं किया या ऐसा करने वाले किसी भी मॉड्यूल का उपयोग नहीं किया, साथ ही समाचार पत्र का पूर्वावलोकन करना ठीक काम करता है और इसे मैन्युअल रूप से भी भेजना है, इसलिए यह अपवाद केवल तब होता है जब मैगेंटो क्रोन कॉल के माध्यम से समाचार पत्र कतार को संसाधित करने का प्रयास करता है।


Magento के क्या संस्करण? Magento 1.9.0.1 में मैं चला सकता हूं Zend_Debug::dump(Mage::getModel('customer/customer')->getAttribute('firstname'));और एक वैध Mage_Customer_Model_Attributeवापस प्राप्त कर सकता हूं । क्या आप डेटाबेस में मैन्युअल रूप से पुष्टि कर सकते हैं कि कोई विशेषता firstnameअंदर है eav_attributeऔर उसमें entity_type_idसे अधिकार है eav_entity_type?
टायलर वी।

जवाबों:


3

मुझे लगता है कि आपके पास कोर फाइल ऐप / कोड / कोर / मैज / न्यूज़लैटर / मॉडल / संसाधन / सब्सक्राइबर / कलेक्शन है।

कृपया 130C के पास showCustomerInfo () फ़ंक्शन देखें। यह होना चाहिए:

public function showCustomerInfo()
{
    $adapter = $this->getConnection();
    $customer = Mage::getModel('customer/customer');
    $firstname  = $customer->getAttribute('firstname');
    $lastname   = $customer->getAttribute('lastname');

    $this->getSelect()
        ->joinLeft(
            array('customer_lastname_table'=>$lastname->getBackend()->getTable()),
            $adapter->quoteInto('customer_lastname_table.entity_id=main_table.customer_id
             AND customer_lastname_table.attribute_id = ?', (int)$lastname->getAttributeId()),
            array('customer_lastname'=>'value')
        )
        ->joinLeft(
            array('customer_firstname_table'=>$firstname->getBackend()->getTable()),
            $adapter->quoteInto('customer_firstname_table.entity_id=main_table.customer_id
             AND customer_firstname_table.attribute_id = ?', (int)$firstname->getAttributeId()),
            array('customer_firstname'=>'value')
        );

    return $this;
}

मुझे ऐसा क्यों लगता है?

  1. आपकी त्रुटि लॉग दिखाती है कि कोई भी तृतीय पक्ष एक्सटेंशन या Mage / स्थानीय फ़ाइलें शामिल नहीं हैं।

  2. इस Magento कार्रवाई के लिए मानक SQL क्वेरी में 'main_table.data, main_table.lifetime, main_table.expire, main_table.priority' भाग नहीं है।


1

अपने स्टैक ट्रेस के माध्यम से चल रहा है, आपकी SQL को कुछ इस तरह दिखना चाहिए:

SELECT `main_table`.`attribute_id`, `main_table`.`entity_type_id`, `main_table`.`attribute_code`, `main_table`.`attribute_model`, `main_table`.`backend_model`, `main_table`.`backend_type`, `main_table`.`backend_table`, `main_table`.`frontend_model`, `main_table`.`frontend_input`, `main_table`.`frontend_label`, `main_table`.`frontend_class`, `main_table`.`source_model`, `main_table`.`is_required`, `main_table`.`is_user_defined`, `main_table`.`default_value`, `main_table`.`is_unique`, `main_table`.`note`, `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`.`is_required` AS `scope_is_required`, `scope_table`.`default_value` AS `scope_default_value`, `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)

मुझे लगता है कि मैजेंटो में कहीं भी अज्ञात कॉलम नहीं मिल सकता है, हालांकि मुझे यह डराने वाला है कि यह सत्र / कैश के साथ कुछ करना है लेकिन 100% निश्चित नहीं है। क्या आपके पास शायद Redis सक्षम है? यदि हां, तो कैश को अक्षम करें और देखें कि परिणाम क्या है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.