Ошибки изменения индекса режима
Мы столкнулись с проблемой при попытке обновить наши режимы индексатора.
$ 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
Не могли бы вы помочь, пожалуйста?
1 answers
Проблема в том, что у вашего пользователя mysql нет разрешения на удаление триггера, который обновляет индекс после обновления объекта.
При изменении режима индексатора этот триггер больше не нужен, так как индекс обновляется по расписанию, а не триггером mysql.
Вот старый ответ относительно magento1 ee, который в основном применим здесь, поскольку базовая бизнес-логика индексатора от magento1 ee используется для magento2: Пользователю БД требуется СУПЕР привилегия для создания атрибутов (SQLSTATE[42000])
Я думаю, что есть 2 возможных решения вашей проблемы:
Предоставьте СУПЕР привилегии пользователю mysql в этой базе данных (я не уверен на 100%, что она включает в себя): https://stackoverflow.com/questions/11946012/how-to-add-super-privileges-to-mysql-database
В вашей конфигурации mysql установите
log_bin_trust_create_function_creators = 1
, который должен устранить необходимость в СУПЕР-привилегиях для изменения триггеров (если я правильно понято)