3

Hi I have been looking for an answer to this all over however I cant find an answer that helps.

Whenever I try and reindex all of the data within the admin panel I seem to get this error:

enter image description here

So far I have tried changing the permissions of the 'media' folder to 777 and also tried dropping the core url rewrites table (I'm not sure if this is the correct name of the table but it's close).

Any idea what else I can do that might resolve this issue?

2
  • run the reindex from cli: php ./shell/indexer.php --reindex catalog_url - you have a 99% chance the shell indexer will simply output the exception/error reason to console
    – ProxiBlue
    Apr 18, 2016 at 8:47
  • Also, have a look at this: github.com/EcomDev/EcomDev_UrlRewrite - using that alternative indexer - I have take a site that took 20 minutes to index to a couple of seconds. (0.14 minutes) - well worth the effort to install, and simply 'just works' - this was on magento 1.9
    – ProxiBlue
    Apr 18, 2016 at 8:52

3 Answers 3

1

There can be numerous factors for such errors i.e.

php.ini maximum execution time & script input time error
apache/lighttpd timeout setting issue
number of products and store views
lock file from previous time preventing indexing to take place

Getting Rid Of Magento ReIndexing Errors

If even after trying multiple times Magento Indexer fails to respond or keep throwing same errors you can take the following steps resolve Magento ReIndexing errors.

  1. Locate var/locks directory and remove all files under this directory. This will clear all the locks for re-indexing to take place again.

  2. Now, login to your MysQSL/phpMyAdmin to run the following MySQL query (Ensure that your have taken full backup before committing this MySQL query)

    DELETE cpop.* FROM catalog_product_option_price AS cpop
    INNER JOIN catalog_product_option AS cpo
    ON cpo.option_id = cpop.option_id
    WHERE
    cpo.type = 'checkbox' OR
    cpo.type = 'radio' OR
    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. Log back in to your Magento Admin panel and go to System tab > Index Management hit index again and you will notice no such errors will appear again. You can follow these same steps again if re-indexing stops in future to resolve Magento ReIndexing issues.

I would love to hear your experiences and questions about Magento Indexing, ReIndexing and indexing errors. Please leave me a comment and let me know.

The var/locks/ (note the "s") directory is created whenever you start an indexing process. Magento writes out a lock file to this directory. Removing the lock files may resolve issues with reindexing.

Like in previous Magento versions, in Magento 1.9 you can find this directory here:

[your Magento install dir]/var/

If the directory isn't there, Magento hasn't created it. If this is the case, then you should look for other solutions for fixing the reindexing issue.

Maybe your var directory doesn't have the right permissions. Magento needs sufficient permissions to be able to create the var/locks directory and write out the lock files. Try setting permissions for var to (at least) 755.

If this doesn't help, maybe you can reindex via SSH or try restarting your webserver.

3
  • I dont seem to have this 'var/locks' directory you have mentioned:puu.sh/kmlqE/272a520e6b.png Sep 24, 2015 at 10:13
  • see my updated answer above Sep 24, 2015 at 10:19
  • Before you do all that, simply run the reindex from cli: php ./shell/indexer.php --reindex catalog_url - you have a 99% chance the shell indexer will simply output the exception/error reason to console
    – ProxiBlue
    Apr 18, 2016 at 8:47
0

You can re-index programmatically by using this code.

< ?php
//Following 3 lines will load the magento admin environment.
require_once 'app/Mage.php';
$app = Mage::app('admin');
umask(0);

// to reindex the processes we require their ids
// for default magento there are 9 processes to reindex, numbered 1 to 9. 
$ids = array(1,2,3,4,5,6,7,8,9);

// Sometimes there are processes from our custom modules that also require reindexing
// We need to add those ids to our existing array of ids
// To know the id of process, just hover on each process in your
// admin panel-> System-> Index Management
// You will get a url : admin/process/some_id/......
// this id corresponds to the process

$ids = array(1,2,3,4,5,6,7,8,9,390,391,478);
foreach($ids as $id)
{
//load each process through its id
try
{
$process = Mage::getModel('index/process')->load($id);
$process->reindexAll();
echo "Indexing for Process ID # ".$id." Done<br />";
}
catch(Exception $e)
{
echo $e->getMessage();
}
}
?>
4
  • Hi I am quite new to Magento and I am just wondering how do I run this code programmatically? I have never done this before? Sep 24, 2015 at 9:58
  • Put this code in your magento root folder and run it through url eg: www.yoursite.com/yourfile.php
    – Arunendra
    Sep 24, 2015 at 10:04
  • Okay so I have tried running it and I get this "Fatal error: Class 'Mage' not found in /home/nickmadd/public_html/dev/g.php on line 4". Sep 24, 2015 at 10:12
  • why not just use the core supplied shell indexer. this does not seem to add any value, to what is already supplied by magento in the shell indexer.
    – ProxiBlue
    Apr 18, 2016 at 8:49
0

Please go to your db and truncate core_url_rewrite, go directly to your admin then reindex, It should work and you will no longer have your error.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.