The SELECT would examine more than MAX_JOIN_SIZE rows

Помилка при оновленні CMS Joomla "The SELECT would examine more than MAX_JOIN_SIZE rows"

Останнім часом, у багатьох людей, під час оновлення CMS Joomla! почала з’являтися помилка:

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

Дана помилка не пов’язана з самою CMS Joomla! Вся справа в налаштуваннях MySQL на сервері. І самостійно ці налаштування ви не можете змінити.

Тому є 3 варіанти як можна уникнути вищезгаданої помилки при оновлені CMS Joomla!:

  1. Зателефонувати в службу підтримки клієнтів своєї хостингової компанії і попросити змінити налаштування MySQL, щоб ви могли оновити свою CMS. В такому випадку, як правило, вам дадуть можливість оновити Joomla, а потім повернуть налаштування до тих які були до цього. Тому, кожного разу перед оновленням CMS вам доведеться зв’язуватись з техпідтримкою. А це дуже не зручно.
  2. Ви можете поміняти хостинг провайдера.
  3. Ви можете спробувати самостійно обійти цю помилку.

Про третій пункт давайте поговоримо більш детально.

В мережі я знайшов декілька варіантів як можна уникнути виникнення помилки "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" при оновленні CMS Joomla!

Варіант 1. Внесення змін в файл MysqliDriver.php

Знайдіть файл libraries\vendor\joomla\database\src\Mysqli\MysqliDriver.php

Приблизно в рядку 334 (дійсній для Joomla 4.3.3) знайдіть:

$this->options['sqlModes'] = explode(',' , $this->setQuery('SELECT @@SESSION.sql_mode;')->loadResult());

Вставте після цього рядка наступний код:

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

Варіант 2. Внесення змін в файл MysqliDriver.php

Знайдіть файл libraries\vendor\joomla\database\src\Mysqli\MysqliDriver.php

Знайдіть код:

// If needed, set the sql modes.

if ($this->options['sqlModes'] !== [])

{

$this->connection->query('SET @@SESSION.sql_mode = \'' . implode(',', $this->options['sqlModes']) . '\';');

}

і замініть його на:

// If needed, set the sql modes.

if ($this->options['sqlModes'] !== [])

{

$this->connection->query('SET @@SESSION.sql_mode = \'' . implode(',', $this->options['sqlModes']) . '\';');

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

}

Посилання і додаткова інформація

Це питання обговорювалося як на форумі Joomla, так і в багатьох інших спільнотах. Ось деякі, але не всі посилання, які можуть вам бути корисними:

Main Menu