Устранение сбоя «При обновлении расчётной таблицы произошёл сбой» / «The SELECT would examine more than MAX_JOIN_SIZE rows»

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

04.09.2014 04:15

Описание сбоя:
  • Сбойные версии: сбой замечен в Magento Community Edition 1.9.0.0
    Сбою, скорей всего, подвержены и другие версии Magento Community Edition, а также Magento Enterprise Edition.

  • Место сбоя: перестройка администратором расчётных таблиц (раздел административного меню «Система» → «Расчётные таблицы»).

  • Описание сбоя:
    После запуска администратом перестройки расчётных таблиц система сначала работает, а потом завершает перестройку сбоем с диагностическим сообщением на экране «При обновлении расчётной таблицы произошёл сбой».
    В журнал exception.log система записывает диагностическое сообщение:
    «Exception message: SQLSTATE[42000]: Syntax error or access violation: 1104 The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay».

  • Причина сбоя:
    Сбой возникает при некоторых настройках сервера баз данных MySQL.
    При этом Magento, обладая полномочиями для изменения этих настроек таким образом, как ей нужно для успешной перестройки расчётных таблиц, тем не менее, этого не делает, и поэтому перестройка расчётных таблиц завершается сбойно.
    Учитывая, что Magento могла избежать сбоя корректировкой настроек MySQL, но не сделала это, позволяет считать данный сбой дефектом Magento.


Способ устранения сбоя:
  • Файл: app/etc/local.xml
  • Что найти:
    <initStatements><![CDATA[SET NAMES utf8]]></initStatements>

  • На что заменить:
    <initStatements><![CDATA[SET NAMES utf8; SET SQL_BIG_SELECTS = 1;]]></initStatements>


Поделиться темой: