Установка магазина - ошибка MAX_JOIN_SIZE Есть решение

После переноса магазина появилась ошибка при выводе иннформации о товаре. Как исправить? спасибо за помощь.
Query Error Query: SELECT p.*,p.id,COUNT(*) orders_count FROM shop_product p JOIN shop_order_items oi1 ON p.id = oi1.product_id JOIN shop_order_items oi2 ON oi1.order_id = oi2.order_id WHERE p.status = 1 AND oi1.product_id != 691 AND oi1.type = 'product' AND oi2.product_id = 691 GROUP BY p.id ORDER BY orders_count DESC LIMIT 5 Error: 1104 Message: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
1104. Запрошенный ресурс недоступен.

20 ответов

  • 2
    Михаил Ушенин Webasyst 30 сентября 2013 04:47 #
    Создайте пользовательский хелпер (согласно инструкции http://www.webasyst.ru/help/170/vypolnenie-proizvolnogo-php-koda-v-shablonakh-temy-dizayna/) со следудющим кодом:

    $model = new waModel();
    $model->exec("SET SQL_BIG_SELECTS=1");

    и вставьте код вызова хелпера в самое начало шаблона product.html.
  • 1
    30 сентября 2013 10:57 #
    Создал пользовательский хелпер
    <?php

    class shopCustom
    {

    public static function someHelper()
    {
    $model = new waModel();
    $model->exec("SET SQL_BIG_SELECTS=1")
    return ...;
    }

    }
    вставил код вызова хелпера {shopCustom::someHelper()} в самое начало шаблона product.html.
    В результате белый экран Что я сделал не так?
    • 0
      Леонид Вакуленко Леонид Вакуленко Webasyst 1 октября 2013 03:16 #
      Parse Error: ошибка синтаксиса PHP. Включите отображение ошибок: https://www.google.com/search?q=как+включить+отображение+ошибок+php

      Конкретно в этом примере не хватает точки с запятой после строки с ->exec(), и нужно либо убрать многоточие, либо в данном случае можно вообще убрать всю строку "return ...;"
    • 0
      Михаил Ушенин Михаил Ушенин Webasyst 1 октября 2013 09:30 #
      Лишняя строка, показанная в статье только для примера:

      return ...;
  • 0
    1 октября 2013 07:50 #
    Спасибо, разобрался.
  • 0
    mstak 1 октября 2013 12:06 #
    Не все я заметил. Когда вызываю корзину то появляется ошибка
    Query Error Query: SELECT p.*,p.id,COUNT(*) orders_count FROM shop_product p JOIN shop_order_items oi1 ON p.id = oi1.product_id JOIN shop_order_items oi2 ON oi1.order_id = oi2.order_id WHERE p.status = 1 AND oi1.product_id != 3579 AND oi1.type = 'product' AND oi2.product_id = 3579 GROUP BY p.id ORDER BY orders_count DESC LIMIT 5 Error: 1104 Message: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
    1104. Запрошенный ресурс недоступен.
    Право не знаю.... может проще удалить магазин и установить снова? Кстати как это правильно сделать?
    • 0
      Леонид Вакуленко Леонид Вакуленко Webasyst 11 октября 2013 10:23 #
      Ошибки, связанные с shop_order_items и MAX_JOIN_SIZE будут исправлены следующим патчем Магазина. В таблице не хватало нужных индексов. Можно добавить их вручную, не дожидаясь патча:

      ALTER TABLE shop_order_items ADD INDEX `order_type` (`order_id`, `type`);
      ALTER TABLE shop_order_items ADD INDEX `product` (`product_id`);
  • 0
    Михаил Ушенин Webasyst 2 октября 2013 01:18 #
    В шаблоне cart.html добавьте вызов этого же хелпера.
  • 0
    mstak 2 октября 2013 03:58 #
    спасибо. Работает
  • 0
    mstak 2 октября 2013 07:56 #
    Новая ошибка!
    Warning: session_start() [function.session-start]: Function spl_autoload_call() hasn't defined the class it was called for in /usr/home/bibleb/domains/biblebooks.com.ua/public_html/SS5/wa-system/storage/waSessionStorage.class.php on line 69
    Как излечить? Спасибо за помощь.
    • 0
      Михаил Ушенин Михаил Ушенин Webasyst 2 октября 2013 09:01 #
      Возможно, у вас на одном домене установлен старый WebAsyst и новый фреймворк, из-за чего у них "путаются" сессии. Если ставить на отдельных доменах, такого происходить не должно.
  • 0
    mstak 2 октября 2013 09:06 #
    Спасибо. Помогло
  • 0
    Sm 5 октября 2013 23:53 #
    похожая ошибка и у меня - при добавлении товара в корзину с карточки товара выдает:
    Query Error
    Query: SELECT t0.sku_id FROM shop_product_features t0 JOIN shop_product_features t1 ON t0.sku_id = t1.sku_id JOIN shop_product_features t2 ON t0.sku_id = t2.sku_id WHERE t0.product_id = 427 AND t0.sku_id IS NOT NULL AND t0.feature_id = 31 AND t0.feature_value_id = 106 AND t1.feature_id = 32 AND t1.feature_value_id = 94 AND t2.feature_id = 33 AND t2.feature_value_id = 95 LIMIT 1
    Error: 1104
    Message: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay

    пробовал создать файл shopCustom.class.php (у меня его кстати не было этого файла изначально - это нормально?) с указанными вами выше параметрами и вставлял его вызов в product.html - выдает ошибку 500 браузер
    • 0
      Sm Sm 6 октября 2013 05:45 #
      добавил таки класс, все норм отображается проверял возвратом текста ок, но ошибка не пропала. Опять как пытаюсь товар у которого набор из многих конфигураций (например 30 вариантов) добавить в корзину выдает ту же ошибку.
    • 0
      Леонид Вакуленко Леонид Вакуленко Webasyst 11 октября 2013 10:44 #
      В таблице shop_product_features не хватает нужного индекса. Он будет добавлен в следующем патче Магазина, или вы можете добавить его вручную, не дожидаясь:

      ALTER TABLE shop_product_features ADD INDEX `sku` (`sku_id`, `feature_id`, `feature_value_id`);
      • 0
        Sm Sm 24 октября 2013 10:05 #
        спасибо, второй момент - ошибка при пользовании фильтром поиска по категории: когда указываю по трем доп характеристикам поиск - выдает ошибку:

        Query Error Query: SELECT p.*,p.id FROM shop_product p JOIN shop_product_features pf1 ON p.id = pf1.product_id AND pf1.feature_id = 49 JOIN shop_product_features pf2 ON p.id = pf2.product_id AND pf2.feature_id = 33 JOIN shop_product_features pf3 ON p.id = pf3.product_id AND pf3.feature_id = 32 JOIN shop_product_features pf4 ON p.id = pf4.product_id AND pf4.feature_id = 43 JOIN shop_product_features pf5 ON p.id = pf5.product_id AND pf5.feature_id = 40 JOIN shop_category_products cp1 ON p.id = cp1.product_id WHERE pf1.feature_value_id IN (152) AND pf2.feature_value_id IN (104) AND pf3.feature_value_id IN (98) AND pf4.feature_value_id IN (140) AND pf5.feature_value_id IN (1) AND p.type_id IN (5) AND p.status = 1 AND cp1.category_id IN(56) GROUP BY p.id ORDER BY cp1.sort ASC LIMIT 30 Error: 1104 Message: 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
        • 0
          Леонид Вакуленко Леонид Вакуленко Webasyst 24 октября 2013 11:05 #
          Добавьте вот такой индекс, это должно помочь:

          ALTER TABLE `shop_product_features` ADD INDEX `product_feature` (`product_id`, `feature_id`, `feature_value_id`)

          Если будут новые ошибки про MAX_JOIN_SIZE, пишите пожалуйста сразу в техподдержку. Добавьте ссылку на этот топик с просьбой передать разработчикам.
  • 0
    mstak 9 октября 2013 09:57 #
    Появилась ошибка в поиске покупателей
    Query Error
    Query: SELECT SQL_CALC_FOUND_ROWS sc.*, c.*, o.create_datetime AS last_order_datetime
    FROM wa_contact AS c
    JOIN shop_customer AS sc
    ON c.id=sc.contact_id
    LEFT JOIN shop_order AS o
    ON o.id=sc.last_order_id
    LEFT JOIN wa_contact_emails AS e ON e.contact_id=c.id
    LEFT JOIN wa_contact_data AS p ON p.contact_id=c.id AND p.field="phone"
    WHERE (CONCAT(c.name, ' ', IFNULL(e.email, ''), ' ', IFNULL(p.value, '')) LIKE '%шты%')
    GROUP BY c.id
    ORDER BY c.name
    LIMIT 0, 10
    Error: 1104
    Message: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay

    Please contact app developer.
    Думаю, что это связано с вызова хелпера. Не знаю в каком файле его установить?

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите