Magento зберігає багато даних у базі даних для оптимізації продуктивності вашого магазину. Однак, як тільки ви оновлюєте будь-які з цих даних, система починає їх індексувати, щоб відновити зміни в таблицях бази даних. Саме тоді в панелі адміністратора з'являється помилка "Один або кілька індексаторів недійсні. Переконайтеся, що ваше завдання cron Magento запущено".
Це одна з найпоширеніших помилок Magento, з якою стикаються всі користувачі Magento під час роботи з Magento.
Це може здатися просто дратівливим повідомленням адміністратора, але за цим стоїть щось більше. Сьогодні ви дізнаєтеся, чому з'являється повідомлення "Один або кілька індексаторів недійсні" та як ви можете легко виправити це з панелі адміністратора або через CLI.
Чому з'являється помилка "Один або кілька індексаторів недійсні"?
Оскільки Magento є складною системою, вона має спеціальну функцію для автоматичного планування та запуску завдань магазину — Завдання cron у Magento . Окрім надсилання розсилок та сповіщень, оновлення правил каталожних цін та курсів валют, cron-завдання також запускають переіндексацію.
Отже, зазвичай Переіндексація Magento запускається автоматично. Однак, якщо щось не так із завданнями cron, ви бачите помилку «Один або кілька індексаторів недійсні. Переконайтеся, що ваше завдання cron Magento запущено».
У цьому випадку вам доведеться переіндексувати вручну, щоб внести зміни до бази даних.
Виправлення помилки «Один або декілька індексаторів недійсні» в Magento
Щоб вирішити помилку «Один або декілька індексаторів недійсні», потрібно перевірити, чи правильно налаштовано режим переіндексації та завдання cron, і запустити переіндексацію.
1. Перевірте режим переіндексації в адміністративній панелі
Перейдіть до Система > Керування індексами та перегляньте індексатори та їх описи. Ви також можете переглянути режими індексаторів та змінити їх у випадаючому списку Дії .
- Оновити під час збереження — Magento автоматично переіндексується після кожного оновлення даних.
- Оновити за розкладом — переіндексація виконується завданнями cron відповідно до налаштованого розкладу.
- Зробити індекс недійсним — вимикає індексатори.
![]()
Також, якщо хочете, ви можете перевірити режим та стан індексаторів через CLI:
bin/magento indexer:status
![]()
Примітка: якщо ви хочете змінити режим для індексаторів з адміністративної панелі або консолі, не забудьте перейти на режим розробника та вимкнути cron, щоб уникнути блокування бази даних.
Щоб змінити режим:
bin/magento indexer:set-mode {realtime|schedule} [indexer]
- realtime — встановлює вказані індексатори для оновлення під час збереження
- schedule — встановлює вказані індексатори для оновлення під час cron schedule
- indexer — список індексаторів, розділених пробілами
2. Запустіть Reindex
Незалежно від режиму, ви можете переіндексувати Magento з адміністративної панелі або через командний рядок. Однак, деякі інші команди також стануть у пригоді.
Щоб переглянути всі індексатори в Magento:
php bin/magento indexer:info
Щоб переіндексувати всі індексатори Magento:
php bin/magento indexer:reindex
Щоб переіндексувати деякі конкретні індексатори:
bin/magento indexer:reindex [indexer]
e.g bin/magento indexer:reindex catalog_product_price
3. Перевірте завдання cron
Після запуску переіндексації Magento має створити завдання cron для цього конкретного завдання. На жаль, іноді не все йде так, як очікувалося, тому деякі завдання cron можуть бути відсутніми.
Щоб встановити відсутні завдання cron у Magento:
php bin/magento cron:install
Щоб запустити всі завдання cron у Magento:
php bin/magento cron:run
Ви також можете запускати cron-завдання вручну з панелі адміністратора , якщо хочете.
Після запуску завдань cron індексатори будуть переіндексовані, і помилка "Один або декілька індексаторів недійсні" в Magento 2 має бути вирішена. Крім того, якщо ви перейдете до Система > Керування індексами , ви побачите, що всі індексатори запущені.