Ошибки изменения индекса режима


Мы столкнулись с проблемой при попытке обновить наши режимы индексатора.

$ php bin/magento indexer:set-mode schedule catalog_product_attribute Product EAV indexer process unknown error: Table catalog_product_attribute_cl already exist

$ php bin/magento indexer:set-mode schedule catalog_product_flat catalog_category_flat catalog_category_product catalog_product_category
Product Flat Data indexer process unknown error:

Table catalog_product_flat_cl already exist

Category Flat Data indexer process unknown error:

SQLSTATE[HY000]: General error: 1419 You do not have the SUPER privilege and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable), query was: DROP TRIGGER IF EXISTS `trg_catalog_category_entity_after_insert`

Category Products indexer process unknown error:

Table catalog_category_product_cl already exist

Product Categories indexer process unknown error:

Table catalog_product_category_cl already exist

Это наши настройки индексов:

$ php bin/magento indexer:show-mode
Customer Grid:                                     Update by Schedule
Product Flat Data:                                 Update on Save
Category Flat Data:                                Update on Save
Category Products:                                 Update on Save
Product Categories:                                Update on Save
Product Price:                                     Update on Save
Product EAV:                                       Update on Save
Stock:                                             Update on Save
Catalog Search:                                    Update on Save
Catalog Rule Product:                              Update on Save
Catalog Product Rule:                              Update on Save

Не могли бы вы помочь, пожалуйста?

Author: 7ochem, 2016-04-12

1 answers

Проблема в том, что у вашего пользователя mysql нет разрешения на удаление триггера, который обновляет индекс после обновления объекта.

При изменении режима индексатора этот триггер больше не нужен, так как индекс обновляется по расписанию, а не триггером mysql.

Вот старый ответ относительно magento1 ee, который в основном применим здесь, поскольку базовая бизнес-логика индексатора от magento1 ee используется для magento2: Пользователю БД требуется СУПЕР привилегия для создания атрибутов (SQLSTATE[42000])

Я думаю, что есть 2 возможных решения вашей проблемы:

  1. Предоставьте СУПЕР привилегии пользователю mysql в этой базе данных (я не уверен на 100%, что она включает в себя): https://stackoverflow.com/questions/11946012/how-to-add-super-privileges-to-mysql-database

  2. В вашей конфигурации mysql установите log_bin_trust_create_function_creators = 1, который должен устранить необходимость в СУПЕР-привилегиях для изменения триггеров (если я правильно понято)

 1
Author: David Verholen, 2017-05-23 12:37:13