Проблема Переиндексации Magento

enter image description hereя столкнулся с одной проблемой в Magento. У меня есть один магазин Magento с несколькими функциями веб-сайта, который содержит приблизительно 4500 продуктов. Я хочу переиндексировать продукт.

я импортировал продукт 4500 csv через функциональность magento по умолчанию. после импорта продукта изменения не отображаются на лицевой стороне, поэтому я пошел в управление индексами, и я обнаружил, что есть два индекса в состоянии обработки

1 Атрибуты Продукта 2 Плоские Данные Продукта

Я уже сделал следующее:

1 Попробуйте переиндексировать его со стороны администратора - >управление индексом

2 попробуйте сделать вручную, вызвав PHP script

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();
}

также измените разрешение папки var / locks на 777, а также переименуйте эту папку, а также попробуйте удалить .файл блокировки, который был создан в этой папке блокировки, но не получил решения.

у меня нет прав SSH. Так есть ли другие решение, которое поможет мне решить проблему переиндексации.

5 ответов


причина

в таблицах catalog_product_flat_% есть ссылки на несуществующие/удаленные продукты.

решение

попытаться усечь catalog_product_flat_% таблицы (catalog_product_flat_1, catalog_product_flat_2, catalog_product_flat_3 и т. д.) в консоли MySQL или через phpMyAdmin:

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

затем переиндексировать.


Примечание: хотя приведенный ниже Ответ, По моему опыту, имеет отношение к этому типу вопросов, он, по-видимому, не является причиной ситуации, с которой в настоящее время сталкивается asker

Processing означает одно из двух:

  • индексы могут на самом деле все еще работать, в этом случае сядьте и подождите, пока они закончат. Индексирование Magento может занять очень много времени (для 4500 продуктов возможны "часы", в зависимости от сервер.)

  • процесс индексатора, возможно, умер, оставив устаревшие замки позади. Между тем, мертвый индексатор, возможно, был запущен другим пользователем. Наиболее распространенным случаем является cron неправильно настроен для запуска индексатора как root, или обычная учетная запись пользователя, а не как тот же пользователь, который используется веб-сайтом (например:apache или www).

все это Processing действительно означает, что " Magento не удалось получить блокировку для этого индексатора Джобс." Первый случай тривиален и неинтересен. Подождите пару часов, и если то же самое индексаторы по-прежнему указан как Processing, тогда у вас может быть второй случай.

Проверьте разрешения файлов блокировки, найденных в разделе var/locks в вашем корне magento. Принадлежат ли они тому же пользователю, что и веб-сервер? Если нет,и вы абсолютно уверены, что индексы не работает, безопасно удалить блокировки. Следующий шаг чтобы узнать, почему замки имели неправильные разрешения в первую очередь. Это разговор, который может быть лучше иметь с вашим хозяином, если у вас нет ssh открыть.


ошибки индексатора будут пойманы и не зарегистрированы по умолчанию. Типичным обходным путем является использование инструмента повторного индексирования CLI; который будет очень подробным с любыми ошибками.

например.

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

но, учитывая, что у вас нет доступа SSH - вы можете либо посмотреть на indexer.php файл, чтобы увидеть, как они генерируют ошибки, или вы можете просто запустить shell_exec или exec из веб-скрипта PHP, который будет эмулировать CLI.


Я не смог переиндексировать catalog_product_flat процесс индексирования. Проведя день и попробовав несколько решений в Интернете. я смог исправить проблему. Ниже приведены шаги.

  1. создайте клон БД Magento, который сталкивается с проблемой индексирования.
  2. дамп БД в созданную БД.
  3. усечь таблицу catalog_product_flat_1 для одного магазина и для нескольких магазинов будет несколько таблиц catalog_product_flat_* здесь * - идентификатор магазина. Здесь усечь весь стол.
  4. укажите запущенный экземпляр mangento на вновь созданную базу данных и настройте databse, чтобы сайт функционировал нормально.
  5. теперь выполните команду php document_root/shell/indexer.php --reindex catalog_product_flat или попробуйте переиндексировать из Admin. php document_root/shell/indexer.php --reindexall для переиндексации всего процесса.

я столкнулся с той же проблемой, при создании новой группы клиентов я не смог переиндексировать цены.

нашел решение здесь http://www.magikcommerce.com/blog/how-to-resolve-magento-reindexing-errors-in-your-magento-store/

здесь порядок:

  1. найдите каталог var / locks и удалите все файлы из этого каталога. Это очистит все блокировки для повторной индексации снова.

  2. Теперь войдите в свой MysQSL / phpMyAdmin, чтобы запустить следующий запрос MySQL (убедитесь, что вы сделали полную резервную копию перед совершением этого запроса MySQL)

    удалить cpop.* Из catalog_product_option_price в качестве cpop Внутреннее соединение catalog_product_option как cpo На cpo.option_id = cpop.option_id ГДЕ cpo.флажок тип = '' или cpo.радио тип = '' или 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 и перейдите на вкладку "Система" > "управление индексом", и вы заметите, что такие ошибки не появятся снова. Вы можете выполнить эти же шаги еще раз, если повторная индексация остановится в будущем, чтобы разрешить Magento ReIndexing вопросы.