Betalningsmetoder Abuse

Ошибка 2006: MySQL Server har försvunnit

09.03.2021, 22:01

Fel 2006 som heter MySQL Sever har försvunnit innebär att servern har vägrat att ansluta trots att den är igång. Det finns bara tre kända orsaker till att felet visas. Det första skälet är att servern är överbelastad. Väntetiden har löpt ut. Det andra skälet är att klienten har skickat ett paket som är för smärtsamt. Det tredje skälet är att servern inte har initialiserats fullt ut. Vidare kommer vi att överväga i detalj vilka skäl felet visas och hur man hanterar det.

Hur man åtgärdar felet

Vanligtvis visas felet när du försöker ansluta till databasen med PHP, konsolklient eller om du använder PhpMyAdmin:

PhpMyAdmin

Låt oss ytterligare undersöka varje situation separat.

Utgången timeout

Som nämndes i början av den här artikeln är en av de möjliga orsakerna utgången väntetid. Det kan vara så att servern var överbelastad och inte klarar belastningen - bearbetar alla anslutningar. För att förstå hur lång tid serverförfrågningar tar kan du använda valfri konsolklient och ansluta till servern. Om du kan göra det, kör valfri begäran. Om frågor tar för mycket tid att bearbeta kan du optimera MySQL med hjälp av ett speciellt skript MySQLTuner. Vanligtvis ökar du poolstorleken för InnoDB-motorn genom att ställa in parametern innodb_buffer_pool_size. Det optimala värdet bestäms med hjälp av ovanstående skript.

Om det är 800 megabyte (det kan vara någon annan storlek), ställ in det:

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

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

Det finns ett annat sätt att lösa problemet. För detta ändamål ökas svarstiden från servern. För att utföra denna uppgift måste du ändra parametern wait_timeout. Detta är den tid i sekunder under vilken du ska vänta på ett svar från servern.

Ett exempel:

wait_timeout=500

параметр wait_timeout

När du gör ändringar, glöm inte att starta om servern nästa gång:

$ sudo systemctl restart mysql

Eller:

$ sudo systemctl restart mariadb

För stort paket

När en användares klient skapar för många paket kommer servern att generera detta fel. Den tillgängliga paketstorleken (maxvärdet) kan ökas med hjälp av parametern max_allowed_packet.

Ett exempel:

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

Var särskilt uppmärksam på klienten, för om den skickar många förfrågningar gör du uppenbarligen något fel. Generera åtminstone inte frågor till MySQL med hjälp av for-loopar.

Servern är felaktigt initialiserad

Om du bestämmer dig för att distribuera MySQL eller MariaDB i Docker, var beredd på att stöta på ett liknande fel. Den initiala initialiseringen av behållaren kräver lite mer fritid. Om du inte låter containern slutföra initialiseringen genom att stoppa och starta den först kommer databasen alltid att returnera detta fel. Lösningen är att helt ta bort containerdata från databasen.

Detta görs på följande sätt:

$ docker-compose down

eller:

$ docker rm mysql-container

Därefter måste du ta bort lagringsutrymmet (volymen) med den felaktigt initierade databasen. Men i början tittar du igenom listan över alla lagringsutrymmen:

$ docker volume ls

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

Efter borttagningen:

$ docker volume rm volume_name

Nu kan du börja initiera applikationen, vänta bara tills databasservern säger att den är klar och att du kan ansluta till den.