Betalingsmåter Abuse

Ошибка 2006: MySQL Server har forsvunnet

09.03.2021, 22:01

Feil 2006 som heter MySQL Sever har forsvunnet, betyr at serveren har nektet å koble seg til selv om den kjører. Det er bare tre kjente årsaker til at feilen vises. Den første grunnen er at serveren er overbelastet. Ventetiden er utløpt. Den andre grunnen er at klienten har sendt en pakke som er for smertefull. Den tredje grunnen er at serveren ikke har blitt fullstendig initialisert. Videre vil vi vurdere i detalj hvilke grunner feilen vises og hvordan du skal håndtere den.

Hvordan fikse feilen

Vanligvis vises feilen når du prøver å koble til databasen ved hjelp av PHP, konsollklient eller i tilfelle du bruker PhpMyAdmin:

PhpMyAdmin

La oss undersøke hver situasjon separat.

Utløpt tidsavbrudd

Som nevnt i begynnelsen av denne artikkelen, er en av de mulige årsakene utløpt ventetid. Det kan være at serveren var overbelastet og ikke kan takle belastningen - behandle alle tilkoblinger. For å forstå hvor lang tid serverforespørsler tar, kan du bruke en hvilken som helst konsollklient og koble til serveren. Hvis du er i stand til å gjøre dette, kan du utføre en hvilken som helst forespørsel. Hvis det tar for lang tid å behandle forespørsler, kan du optimalisere MySQL ved hjelp av et spesielt skript MySQLTuner. Vanligvis øker du poolstørrelsen til InnoDB-motoren ved å angi parameteren innodb_buffer_pool_size. Den optimale verdien bestemmes ved hjelp av skriptet ovenfor.

Hvis det er 800 megabyte (det kan være en hvilken som helst annen størrelse), sett den:

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

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

Det er en annen måte å løse problemet på. For dette formålet økes responstiden fra serveren. For å utføre denne oppgaven må du endre parameteren wait_timeout. Dette er tiden i sekunder som du skal vente på svar fra serveren.

Et eksempel:

wait_timeout=500

параметр wait_timeout

Når du gjør endringer, må du ikke glemme å starte serveren på nytt etterpå:

$ sudo systemctl restart mysql

Eller

$ sudo systemctl restart mariadb

For stor pakke

Når en brukers klient oppretter for mange pakker, vil serveren generere denne feilen. Den tilgjengelige pakkestørrelsen (maksimumsverdien) kan økes ved hjelp av parameteren max_allowed_packet.

Et eksempel:

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

Vær spesielt oppmerksom på klienten, for hvis den sender mange forespørsler, gjør du åpenbart noe galt. I det minste må du ikke generere forespørsler til MySQL ved hjelp av for-løkker.

Serveren er feil initialisert

Hvis du bestemmer deg for å distribuere MySQL eller MariaDB i Docker, må du være forberedt på å støte på en lignende feil. Den første initialiseringen av containeren krever litt mer fritid. Hvis du ikke lar containeren fullføre initialiseringen ved å stoppe og starte den først, vil databasen alltid returnere denne feilen. Løsningen er å fjerne alle data om containeren fra databasen.

Dette gjøres på denne måten:

$ docker-compose down

eller

$ docker rm mysql-container

Deretter må du slette lagringsenheten (volumet) med den feilinitialiserte databasen. Men i begynnelsen ser du gjennom listen over alle lagrene:

$ docker volume ls

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

Etter sletting:

$ docker volume rm volume_name

Nå kan du begynne å initialisere applikasjonen, bare vent til databaseserveren forteller deg at den er klar og at du kan koble deg til den.