Betalingsmetoder Abuse

Ошибка 2006: MySQL Server er forsvundet

09.03.2021, 22:01

Fejl 2006 kaldet MySQL Sever has gone away betyder, at serveren har nægtet at oprette forbindelse, selv om den kører. Der er kun tre kendte årsager til, at fejlen vises. Den første grund er, at serveren er overbelastet. Ventetiden er udløbet. Den anden grund er, at klienten har sendt en pakke, der er for smertefuld. Den tredje grund er, at serveren ikke er blevet fuldt initialiseret. I det følgende vil vi se nærmere på, hvorfor fejlen opstår, og hvordan man håndterer den.

Sådan rettes fejlen

Fejlen opstår normalt, når man forsøger at oprette forbindelse til databasen ved hjælp af PHP, konsolklient eller i tilfælde af brug af PhpMyAdmin:

PhpMyAdmin

Lad os undersøge hver situation for sig.

Udløbet timeout

Som nævnt i begyndelsen af denne artikel er en af de mulige årsager udløbet ventetid. Det kan være, at serveren var overbelastet og ikke kan klare belastningen - behandle alle forbindelser. For at forstå, hvor lang tid serveranmodninger tager, kan du bruge en hvilken som helst konsolklient og oprette forbindelse til serveren. Hvis du er i stand til det, kan du udføre en hvilken som helst anmodning. Hvis forespørgsler tager for lang tid at behandle, kan du optimere MySQL ved hjælp af et særligt script, MySQLTuner. Øg normalt InnoDB-motorens poolstørrelse ved at indstille parameteren innodb_buffer_pool_size. Den optimale værdi bestemmes ved hjælp af ovenstående script.

Hvis den er 800 megabyte (den kan være en hvilken som helst anden størrelse), skal du indstille den:

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

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

Der er en anden måde at løse problemet på. Til dette formål øges svartiden fra serveren. For at udføre denne opgave skal du ændre parameteren wait_timeout. Det er den tid i sekunder, hvor du skal vente på svar fra serveren.

Et eksempel:

wait_timeout=500

параметр wait_timeout

Glem ikke at genstarte serveren, når du foretager ændringer:

$ sudo systemctl restart mysql

Eller:

$ sudo systemctl restart mariadb

For stor en pakke

Når en brugers klient opretter for mange pakker, vil serveren generere denne fejl. Den tilgængelige pakkestørrelse (maksimumværdi) kan øges ved hjælp af parameteren max_allowed_packet.

Et eksempel:

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

Vær særlig opmærksom på klienten, for hvis den sender mange forespørgsler, gør du tydeligvis noget forkert. Generér i det mindste ikke forespørgsler til MySQL ved hjælp af for-løkker.

Serveren er initialiseret forkert

Hvis du beslutter dig for at implementere MySQL eller MariaDB i Docker, skal du være forberedt på at støde på en lignende fejl. Den indledende initialisering af containeren kræver lidt mere fritid. Hvis du ikke lader containeren fuldføre initialiseringen ved at stoppe og starte den først, vil databasen altid returnere denne fejl. Løsningen er at fjerne containerens data helt fra databasen.

Det gøres på denne måde:

$ docker-compose down

eller:

$ docker rm mysql-container

Dernæst skal du slette lageret (volumen) med den forkert initialiserede database. Men kig først listen over alle lagre igennem:

$ docker volume ls

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

Efter sletning:

$ docker volume rm volume_name

Nu kan du begynde at initialisere applikationen, bare vent, indtil databaseserveren fortæller dig, at den er klar, og du kan oprette forbindelse til den.