2012-09-18 14 views
7

enter image description here मुझे Magento में एक समस्या का सामना करना पड़ रहा है। मेरे पास एक मैगेंटो स्टोर है जिसमें बहु वेबसाइट कार्यक्षमता है जिसमें लगभग 4500 उत्पाद हैं। मैं उत्पाद को पुन: अनुक्रमणित करना चाहता हूं।Magento री-इंडेक्सिंग समस्या

मैंने Magento डिफ़ॉल्ट कार्यक्षमता के माध्यम से सीएसवी द्वारा 4500 उत्पाद आयात किया था। उत्पाद परिवर्तन सामने की ओर नहीं दिखा रहा है आयात करने के बाद तो मैं सूचकांक प्रबंधन के पास गया और मैंने पाया के इंडेक्स संसाधन स्थिति में कर रहे हैं देखते हैं

1 उत्पाद गुण 2 उत्पाद फ्लैट डाटा

मैं पहले से ही चरणों का पालन किया था:

1 कोशिश पुनः अनुक्रमित करना व्यवस्थापक पक्ष प्रणाली> सूचकांक प्रबंधन

2 PHP स्क्रिप्ट बुला

require_once 'app/Mage.php'; 
umask(0); 
Mage :: app("default"); 
$process = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_product_flat'); 
$process->reindexAll(); 
करके स्वयं भी करने की कोशिश से यह

या

$indexingProcesses = Mage::getSingleton('index/indexer')->getProcessesCollection(); 
foreach ($indexingProcesses as $process) { 
    $process->reindexEverything(); 
} 

इसके अलावा 777 को var/ताले फ़ोल्डर अनुमति बदल सकते हैं और यह भी कि फ़ोल्डर का नाम बदलने के लिए और भी जो इस ताला फ़ोल्डर में बनाया गया था, लेकिन समाधान नहीं मिला .lock फ़ाइल को नष्ट करने का प्रयास करें।

मेरे पास एसएसएच अधिकार नहीं हैं। तो क्या कोई अन्य समाधान है जो मुझे पुन: अनुक्रमण समस्या हल करने में मदद करेगा।

+0

वास्तविक समस्या क्या है? आपने कई तरीकों का उल्लेख किया है जिन्हें आपने पुनः अनुक्रमणित करने का प्रयास किया है, लेकिन आपने वास्तव में उल्लेख नहीं किया है कि ऐसा क्यों है कि अब तक की कोई भी विधि अपर्याप्त नहीं है। –

+0

हैलो विल, मैंने Magento डिफ़ॉल्ट कार्यक्षमता के माध्यम से सीएसवी द्वारा 4500 उत्पाद आयात किया था। उत्पाद आयात करने के बाद परिवर्तन सामने की ओर नहीं दिख रहे हैं इसलिए मैं इंडेक्स प्रबंधन में गया और मैंने पाया कि दो इंडेक्स प्रसंस्करण स्थिति 1 उत्पाद विशेषताएँ 2 उत्पाद फ्लैट डेटा – drsndodiya

+0

जब इंडेक्स "प्रसंस्करण" स्थिति में फंस गए हैं लंबे समय तक, यह संभव है कि magento की var निर्देशिका में लॉकफाइल पर अनुमतियां गलत हैं। मैगेंटो इंडेक्स को "प्रोसेसिंग" के रूप में सूचीबद्ध करता है जब भी यह लॉक नहीं प्राप्त कर सकता है, विफलता के कारण की जांच करने के लिए परेशान किए बिना। वास्तव में लॉक होने वाले इंडेक्स-प्रसंस्करण के अलावा लॉक प्राप्त करने में असफल होने का सबसे आम कारण है, यह एक अलग उपयोगकर्ता खाते द्वारा बनाए गए ताले हैं। (उदाहरण के लिए, यदि 'cron'' root' के रूप में चलाया जाता है, जबकि Magento सामान्य रूप से 'अपाचे' उपयोगकर्ता द्वारा एक्सेस किया जाता है)। सुनिश्चित करें कि magento ताले के लिए लेखन पहुंच है। –

उत्तर

0

कारण

catalog_product_flat_% तालिकाओं में inexisting/नष्ट कर दिया उत्पादों के संदर्भ हैं। MySQL कंसोल phpMyAdmin में या माध्यम से'catalog_product_flat_% 'तालिकाओं (catalog_product_flat_1, catalog_product_flat_2, catalog_product_flat_3 आदि) काटना

समाधान

प्रयास करें:

mysql > truncate table ´catalog_product_flat_1´; 
mysql > truncate table ´catalog_product_flat_2´; 
mysql > truncate table ´catalog_product_flat_3´; 

फिर पुन: अनुक्रमणिका।

+0

होगा इंडेक्स को "प्रसंस्करण" के रूप में हमेशा चिह्नित करने के बजाय चुपचाप विफल होने का कारण बनता है? –

+0

मुझे डीबी को प्रभावित किए बिना अनुक्रमण करना है - Palanikumar – drsndodiya

+1

@Palanikumar: यदि मैं इन आदेशों को चलाता हूं, तो क्या यह मेरे उत्पाद सूची को हटा देगा या उन उत्पादों पर कोई प्रभाव नहीं पड़ेगा जो पहले से जोड़े गए हैं। – Prashant

6

नोट: जबकि नीचे इस सवाल का जवाब है, मेरे अनुभव, इस प्रकार की समस्या के लिए प्रासंगिक हो गया है, यह स्थिति वर्तमान में प्रश्नकर्ता द्वारा अनुभव के कारण

Processing में से एक का मतलब होने के लिए प्रकट नहीं होता है दो चीजें:

  • इंडेक्स वास्तव में अभी भी चल रहे हैं, इस मामले में, वापस बैठें और उन्हें समाप्त करने का इंतजार करें। Magento इंडेक्सिंग में बहुत लंबा समय लग सकता है (4500 उत्पादों के लिए, सर्वर पर निर्भर करता है, "घंटे" संभव है)।

  • एक सूचकांक प्रक्रिया की मृत्यु हो सकती है, जिससे पीछे के ताले ताले निकल सकते हैं। इस बीच, मृत सूचकांक एक अलग उपयोगकर्ता द्वारा चलाया जा सकता है। सबसे सामान्य मामला cron को सूचकांक को root, या एक सामान्य उपयोगकर्ता खाता के रूप में चलाने के लिए गलत तरीके से कॉन्फ़िगर किया गया है, जैसा कि वेबसाइट द्वारा उपयोग किया जाता है (उदाहरण: apache या www)।

सब Processing वास्तव में इसका मतलब है कि "Magento इन इंडेक्सर नौकरियों के लिए एक ताला प्राप्त करने में विफल रहा।" पहला मामला मामूली और अनिच्छुक है। कुछ घंटों तक प्रतीक्षा करें, और यदि समान इंडेक्सर्स अभी भी Processing के रूप में सूचीबद्ध हैं, तो आपके पास दूसरा मामला हो सकता है।

लॉक फ़ाइलों की अनुमतियों की जांच करें, जो आपके Magento रूट में var/locks के अंतर्गत पाए जाते हैं। क्या वे उसी उपयोगकर्ता के स्वामित्व में हैं जैसे वेब सर्वर चल रहा है? यदि नहीं, और आप बिल्कुल निश्चित हैं कि अनुक्रमणिका अब नहीं चल रही हैं, तो ताले को हटाना सुरक्षित है। अगला कदम यह पता लगाना है कि ताले के पास पहली जगह गलत अनुमति क्यों थी। यह एक वार्तालाप है जो आपके मेजबान के साथ बेहतर हो सकता है, अगर आपके पास ssh पहुंच नहीं है।

1

इंडेक्सर से त्रुटियों को पकड़ा जाएगा और डिफ़ॉल्ट रूप से लॉग इन नहीं किया जाएगा। सामान्य वर्कअराउंड सीएलआई री-इंडेक्स टूल का उपयोग करना है; जो किसी भी त्रुटि के साथ बहुत verbose होगा।

ईजी।

php shell/indexer.php --reindex ... 

लेकिन दिया आप SSH उपयोग कर सकते है नहीं है - या तो आप indexer.php फ़ाइल को देखो देखने के लिए कि वे किस तरह त्रुटियों उत्पन्न कर सकते हैं, या आप बस एक shell_exec या exec लांच कर सकता है एक वेब आधारित PHP स्क्रिप्ट से कि सीएलआई अनुकरण करेंगे।

0

मैं catalog_product_flat अनुक्रमणिका प्रक्रिया reindex करने में सक्षम नहीं था। एक दिन खर्च करने और इंटरनेट पर कई समाधानों की कोशिश करने के बाद। मैं इस मुद्दे को ठीक करने में सक्षम था। नीचे कदम हैं।

  1. इंडेक्सिंग समस्या का सामना कर रहे Magento डीबी का एक क्लोन बनाएं।
  2. डेटाबेस को नए बनाए गए डीबी में डंप करें।
  3. एकल स्टोर के लिए तालिका catalog_product_flat_1 को छोटा करें और एकाधिक स्टोर के लिए कई तालिका catalog_product_flat_* होगी जहां * स्टोर आईडी है। यहां सभी टेबल को छोटा करें।
  4. नए बनाए गए डेटाबेस में मैंगेंटो चलने का उदाहरण इंगित करें और डेटाबेस को कॉन्फ़िगर करें, ताकि साइट सामान्य रूप से कार्य कर रही हो।
  5. अब php document_root/shell/indexer.php --reindex catalog_product_flat आदेश चलाएं या व्यवस्थापक से पुन: प्रयास करने का प्रयास करें। सभी प्रक्रिया reindexing के लिए php document_root/shell/indexer.php --reindexall
0

मैं एक ही समस्या में भाग गया, जब नया ग्राहक समूह बना रहा तो मैं कीमतों को फिर से बेचने में असमर्थ था।

  1. जानें var/ताले निर्देशिका और इस निर्देशिका के अंतर्गत सभी फ़ाइलों को हटा दें:

    प्रक्रिया मिले यहाँ समाधान http://www.magikcommerce.com/blog/how-to-resolve-magento-reindexing-errors-in-your-magento-store/

    यहाँ। यह पुनः लॉन्च करने के लिए फिर से अनुक्रमण के लिए सभी ताले साफ़ करेगा।

  2. अब, अपने MysQSL करने के लिए प्रवेश/phpMyAdmin निम्नलिखित MySQL क्वेरी cpop अंदरूनी शामिल हों catalog_product_option के रूप में के रूप में चलाने के लिए (सुनिश्चित करें कि आपकी इस MySQL क्वेरी करने से पहले पूर्ण बैकअप ले लिया है)

    cpop हटाएँ। * Catalog_product_option_price से cpo cpo.option_id = cpop पर।option_id जहां cpo.type = 'चेकबॉक्स' या cpo.type = 'रेडियो' या cpo.type = 'drop_down';

    DELETE cpotp.* FROM catalog_product_option_type_price AS cpotp 
    INNER JOIN catalog_product_option_type_value AS cpotv 
    ON cpotv.option_type_id = cpotp.option_type_id 
    INNER JOIN catalog_product_option AS cpo 
    ON cpotv.option_id = cpo.option_id 
    WHERE 
    cpo.type <> 'checkbox' AND 
    cpo.type <> 'radio' AND 
    cpo.type <> 'drop_down'; 
    
  3. प्रवेश करें अपने Magento व्यवस्थापक फलक में वापस और सिस्टम टैब पर जाएं> सूचकांक प्रबंधन फिर से सूचकांक मारा और आप इस तरह के कोई त्रुटि फिर से दिखाई देगा देखेंगे। MagentoReIndexing समस्याओं को हल करने के लिए भविष्य में फिर से अनुक्रमण बंद होने पर आप इन चरणों का फिर से पालन कर सकते हैं।