# MAX_JOIN_SIZE hibák megoldása

> Az 1104-es adatbázishiba felismerése, a tárhelynél kérendő megoldás és egy nem támogatott kerülőmegoldás.

Egy adatbázis-lekérdezési korlát megakadályozhatja, hogy a vezérlőpult megjelenítse a Child-webhelyeket a **Webhelyek kezelése** oldalon és a webhelyválasztókban. Más, webhelyadatokat lekérő műveletek is érintettek lehetnek.

Először fordulj a tárhelyszolgáltatóhoz: az ajánlott megoldás olyan tárhelybeállítás, amely lehetővé teszi a vezérlőpult lekérdezéseinek lefutását. Az alábbi kerülőmegoldást csak akkor használd, ha a szolgáltató nem tud megfelelő megoldást adni, és megerősíti, hogy a munkamenet-felülbírálás megengedett.

Előfeltétel: ismered az adatbázishiba szövegét (a vezérlőpult vagy a tárhely jelzi), tudsz kapcsolatba lépni a vezérlőpult tárhelyének ügyfélszolgálatával, és a kerülőmegoldáshoz friss mentésed van, és fájlkezelő- vagy SFTP-hozzáférésed a WordPress-telepítéshez.

## A hiba felismerése

Ez a fejezet akkor érvényes, ha a vezérlőpult hibanaplójában ehhez hasonló üzenet szerepel:

```text
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
```

Ez az 1104-es adatbázishiba. Az üres webhelylista önmagában nem bizonyítja, hogy ez az ok. Ha nincs meg a hibaüzenet, kérd a tárhelyet, hogy nézzék meg az adatbázishibákat, amíg megismétled az érintett műveletet. A WordPress hibanaplójának gyűjtéséről a hibanaplózásról szóló fejezet szól. Ha a hibát más művelet közben (például egy üzemidő-ellenőrzésnél) rögzítették, az azt mutatja, hogy a korlát ezt a lekérdezést is érinti. Hogy ez az üres **Webhelyek kezelése** táblázatot is megmagyarázza-e, azt úgy ellenőrizheted, hogy a táblázat betöltésekor is jelentkezik-e ugyanez a hiba.

## Miért lehet mégis helyes a webhelyszám

A `MAX_JOIN_SIZE` azt korlátozza, hány sort vizsgálhat meg becslés szerint egy adatbázis-lekérdezés. Ez lekérdezés-feldolgozási korlát, nem a kezelhető Child-webhelyek számának korlátja. A vezérlőpult több táblát összekapcsoló lekérdezésekkel olvassa a webhelyek adatait. Egy egyszerűbb webhelyszámláló lekérdezés még lefuthat, miközben a webhelylista lekérdezése hibázik. A rendszerjelentés ezért a várt webhelyszámot mutathatja, miközben a **Webhelyek kezelése** üres. Ez önmagában nem jelenti, hogy a webhelyadatok törlődtek, vagy hogy az adatbázist javítani kell.

## Fordulj a tárhelyhez

Küldd el a pontos adatbázishibát a vezérlőpultot futtató szolgáltatónak, és kérd meg, hogy vizsgálják meg:

- tartósan bekapcsolhatják-e az `SQL_BIG_SELECTS` beállítást a vezérlőpult által használt WordPress-adatbázis-kapcsolatokra;
- megfelelően módosíthatják-e a `MAX_JOIN_SIZE` értékét a tárhelykörnyezetnek megfelelően.

A szolgáltató dönti el a megfelelő beállítást, és ő értékeli az adatbázis teljesítményét. Küldhetsz ehhez hasonló üzenetet:

> A MainWP vezérlőpultom az 1104-es adatbázishibát kapja: „The SELECT would examine more than MAX_JOIN_SIZE rows.” A webhelylisták érintettek. Kérlek, vizsgáljátok meg a korlátot, és adjatok tartós megoldást a vezérlőpult WordPress-adatbázis-kapcsolataira, például az SQL_BIG_SELECTS bekapcsolását vagy a MAX_JOIN_SIZE módosítását. Ha egyik sem lehetséges, kérlek, erősítsétek meg, hogy az alkalmazásszintű SQL_BIG_SELECTS munkamenet-felülbírálás megengedett.

A `SET SESSION SQL_BIG_SELECTS = 1` egyszeri futtatása a phpMyAdminban csak az adott kapcsolat munkamenetét módosítja. A WordPress külön adatbázis-kapcsolatait nem állítja be.

## Az eredmény ellenőrzése

Ismételd meg ezeket a lépéseket, miután a szolgáltató módosította a beállítást, vagy miután telepítetted a kerülőmegoldást.

1. Nyisd meg a **Webhelyek → Webhelyek kezelése** oldalt, és nézd meg, megjelennek-e a Child-webhelyek. Az alábbi szűrővisszaállításhoz használd a táblázatos nézetet.
2. Ha a lista üres marad, az állapotszűrőben válaszd a **Csatlakoztatva** értéket, kattints a **Szűrés** gombra, majd a **Visszaállítás** gombra, hogy visszatérj az összes állapothoz. A visszaállítás a táblázatos nézetben a **Webhelyek kezelése** gyorsítótárazott találatait is törli. Ha a **Visszaállítás** gomb már elérhető, közvetlenül is rákattinthatsz.
3. Ismételd meg az érintett műveleteket: nézd meg a korábban üres webhelyválasztókat, és próbálj szinkronizálni egy webhelyet. Kérd meg a szolgáltatót, hogy nézze az 1104-es hiba új előfordulásait, amíg megismétled a korábban hibázó műveletet, vagy nézd át a hibanaplót, ha hozzáférsz.

Ha az adatbázishiba megmarad, küldd el az új hibát a tárhelynek. Ha az 1104-es hiba megszűnt, de a webhelyek továbbra is hiányoznak, fordulj a MainWP támogatásához a vezérlőpult verziójával, a megmaradt tünetekkel és a szolgáltató válaszával.

## Opcionális, nem támogatott kerülőmegoldás

Ez a kerülőmegoldás nem beépített MainWP-funkció, és nem része a MainWP támogatott konfigurációjának. Csak akkor fontold meg, ha már fordultál a tárhelyhez, a szolgáltató nem tud megfelelő tárhelyoldali megoldást adni, és megerősíti, hogy a munkamenet-felülbírálás megengedett. A megoldás megkerüli a lekérdezésméret-korlátot az ugyanazt a WordPress-adatbázis-kapcsolatot használó összes lekérdezésre, a más bővítményekéire is. Nem optimalizálja a lekérdezéseket, és nem javítja a hiányzó indexeket. A teljesítménnyel kapcsolatos kérdéseket beszéld meg a szolgáltatóval: a sikeres eredmény nem bizonyítja a hosszú távú kompatibilitást vagy teljesítményt.

A kerülőmegoldás egy kis WordPress „must-use” bővítménnyel futtatja a `SET SESSION SQL_BIG_SELECTS = 1` parancsot. Ettől az adatbázis az aktuális kapcsolatra figyelmen kívül hagyja a `MAX_JOIN_SIZE` értékét, a szerver globális beállításának módosítása nélkül.

### A kerülőmegoldás telepítése

Csak a vezérlőpultot futtató WordPress-telepítésen végezd el. A Child-webhelyekre ne telepítsd a fájlt.

1. Készíts friss mentést a vezérlőpult adatbázisáról és fájljairól, és ellenőrizd, hogy sikeresen lefutott. Tartsd elérhetően a fájlkezelőt vagy az SFTP-t, hogy szükség esetén el tudd távolítani a kerülőmegoldást.
2. A tárhely fájlkezelőjével vagy SFTP-vel nyisd meg a vezérlőpult-telepítés `wp-content` mappáját. Ha nincs `mu-plugins` nevű mappa, hozd létre. A mappában lévő meglévő fájlokat hagyd meg.
3. Hozz létre egy `mainwp-sql-big-selects-workaround.php` nevű egyszerű szöveges fájlt a teljes alábbi kóddal, a nyitó `<?php` címkével együtt:

   ```php
   <?php
   /**
    * Plugin Name: MainWP Dashboard SQL_BIG_SELECTS Workaround
    * Description: Enables large SELECT queries for the current WordPress database session.
    * Version: 1.0.0
    */

   if ( ! defined( 'ABSPATH' ) ) {
       exit;
   }

   global $wpdb;

   $wpdb->query( 'SET SESSION SQL_BIG_SELECTS = 1' );
   ```

   A fájlt közvetlenül az `mu-plugins` mappába told, a WordPress-telepítéshez viszonyított útvonala:

   ```text
   wp-content/mu-plugins/mainwp-sql-big-selects-workaround.php
   ```

   A fájlnév `.php` végződésű legyen, ne `.php.txt`. Ha már van ilyen nevű fájl, őrizz meg egy másolatot a csere előtt.
4. Ellenőrizd az eredményt. A WordPress automatikusan betölti a közvetlenül az `mu-plugins` mappában lévő PHP-fájlokat a normál bővítmények előtt, bekapcsolni nem kell. Kövesd az „Az eredmény ellenőrzése” szakaszt. Ha a kerülőmegoldás új problémát okoz, távolítsd el a fájlt az alábbiak szerint.

### A kerülőmegoldás eltávolítása

Ha a tárhely tartós megoldást adott, távolítsd el a kerülőmegoldást, és ismételd meg az eredmény ellenőrzését. A fájlkezelővel vagy SFTP-vel csak ezt a fájlt töröld:

```text
wp-content/mu-plugins/mainwp-sql-big-selects-workaround.php
```

A többi must-use bővítményt hagyd meg. A must-use bővítményeket a szokásos WordPress-bővítményoldalról nem lehet kikapcsolni: a felülbírálás alkalmazását a fájl törlésével állíthatod le, a WordPress következő betöltésétől kezdve. Ha az alapul szolgáló adatbázis-korlát megmarad, az 1104-es hiba az eltávolítás után visszatérhet.
