Magento EE 1.13.0.2 частичный переиндекс

У меня проблема с magento частичной переиндексацией в EE. Когда индексаторы настроены на сохранение (в system->configuration->(Advanced)Index management), url_rewrites не обновляются.

Если я сохраню продукт в бэкэнде, то загляну в таблицу enterprise_catalog_product_rewrite, там нет записи для этого продукта, и я думаю, из-за этого нет записи в enterprise_url_rewrite, что означает, что он не работает.

Я могу увидеть товар в списке, но URL не оптимизирован для SEO, и если в браузере введен URL-адрес, продукт не будет отображаться.

Я искал информацию о том, как работает эта частичная индексация, но, кажется, нет ничего, кроме как лучше.

Я попытался усечь переписанные URL-адреса связанных таблиц вручную ( как это), но он просто испортил все, поэтому я восстановил базу данных.

2 ответа

У меня была такая же проблема где catalog_product_entity_url_key будет содержать правильные данные для каждого магазина, и enterprise_url_rewrite будет содержать правильный request_path > target_path пар. Но никаких совпадений не произойдет, потому что enterprise_catalog_product_rewrite отсутствовала запись для данного продукта или была запись, указывающая на url_rewrite_id который больше не существует в enterprise_url_rewrite,

Мое решение состояло в том, чтобы восстановить enterprise_catalog_product_rewrite таблица с этим запросом:

REPLACE INTO enterprise_catalog_product_rewrite
(`product_id`, `store_id`, `url_rewrite_id`)
(SELECT cpeuk.entity_id as product_id, cpeuk.store_id, eur.url_rewrite_id
FROM catalog_product_entity_url_key cpeuk
INNER JOIN enterprise_url_rewrite eur
ON cpeuk.value = eur.identifier)

Новый уникальный индекс Magento CE 1.8 изменяет ключи URL в таблице перезаписи URL. Если у вас есть несколько просмотров магазина и вы импортируете свои продукты (так, чтобы для каждого просмотра магазина был сохранен ключ URL), вы автоматически дублируете ключи. Сценарий обновления достаточно умен, чтобы не выдавать ошибку, а переименовать все ключи, чтобы в итоге получилось что-то вроде:

 - http://de.example.com/someproduct.html
 - http://en.example.com/someproduct1.html
 - http://nl.example.com/someproduct2.html

Чтобы избежать этого, перед обновлением необходимо исправить перезаписи URL-адреса, чтобы для каждого продукта и ключа URL-адреса была одна перезапись, а представления магазина используют "Использовать по умолчанию". Вы можете управлять этим с помощью одного SQL-запроса перед обновлением:

DELETE nondefault
FROM catalog_product_entity_varchar AS nondefault
INNER JOIN catalog_product_entity_varchar AS def ON def.value = nondefault.value
AND def.entity_id = nondefault.entity_id
WHERE def.attribute_id =86
AND nondefault.attribute_id =86
AND nondefault.store_id <>0
AND def.store_id =0

Обратите внимание, что 86 является идентификатором атрибута ключа URL. Если вы уже обновили свою систему, не выполнив сначала этот запрос, сначала необходимо удалить неправильно созданные URL-ключи. Это можно сделать с помощью следующего запроса:

DELETE url_table
FROM catalog_product_entity_url_key url_table
INNER JOIN catalog_product_entity_varchar old_url_table ON url_table.store_id = old_url_table.store_id
AND url_table.store_id <>0
AND old_url_table.store_id <>0
AND url_table.attribute_id = old_url_table.attribute_id
AND url_table.entity_id = old_url_table.entity_id;

Надеюсь, это поможет! Следующая ссылка может помочь вам, если у вас есть дополнительные вопросы: http://www.code4business.de/update-magento-enterprise-edition-1-13-0-2/

Другие вопросы по тегам