Způsoby platby Abuse

Ошибка 2006: MySQL Server odešel

09.03.2021, 22:01

Chyba 2006 s názvem MySQL Sever has gone away znamená, že se server odmítl připojit, přestože je spuštěn. Jsou známy pouze tři důvody, proč se tato chyba objevuje. Prvním důvodem je, že je server přetížen. Vypršela čekací doba. Druhý důvod - klient odeslal příliš bolestivý paket. Třetím důvodem je, že server nebyl plně inicializován. Dále se budeme podrobně zabývat tím, z jakých důvodů se chyba objevuje a jak ji řešit.

Jak chybu opravit

Chyba se obvykle objevuje při pokusu o připojení k databázi pomocí PHP, konzolového klienta nebo v případě použití PhpMyAdmin:

PhpMyAdmin

Prozkoumejme dále každou situaci zvlášť.

Vypršel časový limit

Jak bylo uvedeno na začátku tohoto článku, jednou z možných příčin je vypršení čekací doby. Může se stát, že server byl přetížen a nezvládá zátěž - zpracování všech spojení. Chcete-li pochopit, jak dlouho trvají požadavky serveru, můžete použít libovolného konzolového klienta a připojit se k serveru. Pokud se vám to podaří, proveďte libovolný požadavek. Pokud zpracování dotazů trvá příliš dlouho, můžete MySQL optimalizovat pomocí speciálního skriptu MySQLTuner. Obvykle zvětšete velikost poolu motoru InnoDB nastavením parametru innodb_buffer_pool_size. Optimální hodnotu určíte pomocí výše uvedeného skriptu.

Pokud je to 800 megabajtů (může mít i jinou velikost), nastavte ji:

$ sudo vi /etc/mysql/my.cnf
innodb_buffer_pool_size=800M

https://pq.hosting/help/myfiles/mysqlhasgoneavay-991x576.png

Problém lze vyřešit i jiným způsobem. Za tímto účelem se zvýší doba odezvy ze serveru. K provedení tohoto úkolu je třeba změnit parametr wait_timeout. Jedná se o dobu v sekundách, po kterou byste měli čekat na odpověď ze serveru.

Příklad: V případě, že je server od serveru odpojen, je třeba zadat následující parametr:

wait_timeout=500

параметр wait_timeout

Při provádění změn nezapomeňte příště restartovat server:

$ sudo systemctl restart mysql

Nebo:

$ sudo systemctl restart mariadb

Příliš velký paket

Pokud klient uživatele vytvoří příliš mnoho paketů, server vygeneruje tuto chybu. Dostupnou velikost paketu (maximální hodnotu) lze zvýšit pomocí parametru max_allowed_packet.

Například: "V případě, že je paket uložen na serveru, je možné jej uložit na serveru.

$ sudo vi /etc/mysql/my.cnf
max_allowed_packet=128M

Věnujte zvláštní pozornost klientovi, protože pokud odesílá mnoho požadavků, zřejmě děláte něco špatně. Přinejmenším negenerujte dotazy do MySQL pomocí smyček for.

Server je nesprávně inicializován

Pokud se rozhodnete nasadit MySQL nebo MariaDB v Dockeru, připravte se na to, že se s podobnou chybou setkáte. Počáteční inicializace kontejneru vyžaduje trochu více volného času. Pokud nenecháte kontejner dokončit inicializaci tím, že jej nejprve zastavíte a spustíte, databáze vždy vrátí tuto chybu. Řešením je kompletní odstranění dat kontejneru z databáze.

To se provede následujícím způsobem:

$ docker-compose down

nebo:

$ docker rm mysql-container

Dále je třeba odstranit úložiště (svazek) s nesprávně inicializovanou databází. Na začátku však projděte seznam všech úložišť:

$ docker volume ls

СЕРВЕР НЕВЕРНО ПРОИНИЦИАЛИЗИРОВАН

Po vymazání:

$ docker volume rm volume_name

Nyní můžete začít inicializovat aplikaci, stačí počkat, až vám databázový server oznámí, že je připraven a můžete se k němu připojit.