Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Notice: Error No: 1104. Большое количество товаров.


Recommended Posts

Я не уверен, связано ли это с движком, с большим количеством товаров или со сторонним модулем, которым я производил загрузку товаром, подскажите пожалуйста, в какую сторону копать. Или может быть проблема с настройками SQL?

 

В админке, сверху, на всех страницах пишет вот такое сообщение:

 

Notice: Error: 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
Error No: 1104
SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.quantity = '0' in /home/aik-snab/aik-snab.rf/http/system/library/db/mysqli.php on line 41Notice: Trying to get property of non-object in /home/aik-snab/aik-snab.rf/http/admin/model/catalog/product.php on line 693

 

Когда захожу в админку, в раздел товаров, то показывает только первых 10ть штук, остальные не видны. Если просто работаю с интернет-магазином, то ошибок нет, поиск работает, даже по большим запросам.

 Количество товаров действительно большое - будет около 200 000. Проблема проявилась не сразу, а когда загрузил их большое количество.

 

Заранее спасибо.

Надіслати
Поділитися на інших сайтах


Написано, но я не поинмаю, куда это прописать.

Попробовал в файле: /http/system/library/db/mysqli.php

добавить строчку, выделенную жирным, но результатов это не дало:

 

    public function __construct($hostname, $username, $password, $database, $port = '3306') {
        if (!$this->link = mysql_connect($hostname . ':' . $port, $username, $password)) {
            trigger_error('Error: Could not make a database link using ' . $username . '@' . $hostname);
            exit();
        }

        if (!mysql_select_db($database, $this->link)) {
            trigger_error('Error: Could not connect to database ' . $database);
            exit();
        }

        mysql_query("SET NAMES 'utf8'", $this->link);
        mysql_query("SET CHARACTER SET utf8", $this->link);
        mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $this->link);
        mysql_query("SET SQL_MODE = ''", $this->link);
        mysql_query("SET SQL_BIG_SELECTS=1", $this->link);
    }

Надіслати
Поділитися на інших сайтах


Т.е. я понимаю, что дело в SQL-запросе, который возвращает слишком большое количество параметров, и что это связано с большим количеством товаров в базе.

 

Но мне в принципе не понятно, что это за запрос, который выполняется при каждом обновлении страницы в админке, т.е. если я даже не захожу в раздел товаров, а захожу в раздел модулей или скажем в настройки, эта ошибка есть в шапке.

 

И в каком месте правильно прописать "SET SQL_BIG_SELECTS=1".

 

А вот на странице с товарами этот запрос выполняется дважды, есть две ошибки, как написано ниже:

 

Notice: Error: 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
Error No: 1104
SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' in /home/aik-snab/aik-snab.rf/http/system/library/db/mysqli.php on line 41Notice: Trying to get property of non-object in /home/aik-snab/aik-snab.rf/http/admin/model/catalog/product.php on line 693Notice: Error: 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
Error No: 1104
SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.quantity = '0' in /home/aik-snab/aik-snab.rf/http/system/library/db/mysqli.php on line 41Notice: Trying to get property of non-object in /home/aik-snab/aik-snab.rf/http/admin/model/catalog/product.php on line 693

Змінено користувачем rassamaha
Надіслати
Поділитися на інших сайтах


В общем нашел решение, в файле:

http/system/library/db/mysqli.php

Нужно прописать строчку, выделенную жирным.

 

public function __construct($hostname, $username, $password, $database, $port = '3306') {
        $this->link = new \mysqli($hostname, $username, $password, $database, $port);

        if ($this->link->connect_error) {
            trigger_error('Error: Could not make a database link (' . $this->link->connect_errno . ') ' . $this->link->connect_error);
            exit();
        }

        $this->link->set_charset("utf8");
        $this->link->query("SET SQL_MODE = ''");
        $this->link->query("SET SQL_BIG_SELECTS=1");
    }

Змінено користувачем rassamaha
  • +1 2
Надіслати
Поділитися на інших сайтах


  • 8 months later...
В 26.06.2016 в 12:00, rassamaha сказал:

В общем нашел решение, в файле:

http/system/library/db/mysqli.php

Нужно прописать строчку, выделенную жирным.

 

public function __construct($hostname, $username, $password, $database, $port = '3306') {
        $this->link = new \mysqli($hostname, $username, $password, $database, $port);

        if ($this->link->connect_error) {
            trigger_error('Error: Could not make a database link (' . $this->link->connect_errno . ') ' . $this->link->connect_error);
            exit();
        }

        $this->link->set_charset("utf8");
        $this->link->query("SET SQL_MODE = ''");
        $this->link->query("SET SQL_BIG_SELECTS=1");
    }

Работает!

Надіслати
Поділитися на інших сайтах


  • 1 year later...

Opencart 2.3 после

$this->connection->query("SET SQL_MODE = ''");

добавить
 

$this->connection->query("SET SQL_BIG_SELECTS=1");

 

  • +1 1
Надіслати
Поділитися на інших сайтах

  • 1 year later...

После добавления строки

$this->link->query("SET SQL_BIG_SELECTS=1");

зависают хостинги из-за нагрузок MySQL,

виртуальный  виртуальный хостинг на jino.ru - превышение жёсткого лимита в 6 раз,
,VPS с базой на SSD на reg.ru с превышением в 3 раза лимита тоже завис

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.