Formas de pagamento Abuse

Ошибка 2006: O servidor MySQL foi-se embora

09.03.2021, 22:01

O erro 2006 chamado MySQL Sever has gone away significa que o servidor se recusou a ligar-se, apesar de estar a funcionar. Existem apenas três razões conhecidas para o aparecimento do erro. A primeira razão é que o servidor está sobrecarregado. O tempo de espera expirou. A segunda razão - o cliente enviou um pacote demasiado doloroso. A terceira razão é o facto de o servidor não ter sido totalmente inicializado. Mais adiante, analisaremos em pormenor as razões pelas quais o erro aparece e como lidar com ele.

Como corrigir o erro

Normalmente, o erro aparece quando se tenta ligar à base de dados utilizando o PHP, o cliente da consola ou, no caso de utilizar o PhpMyAdmin:

PhpMyAdmin

Vamos examinar cada situação separadamente.

Tempo limite expirado

Como mencionado no início deste artigo, uma das causas possíveis é o tempo de espera expirado. Pode ser que o servidor esteja sobrecarregado e não consiga lidar com a carga - processando todas as conexões. Para saber quanto tempo demoram os pedidos do servidor, pode utilizar qualquer cliente de consola e ligar-se ao servidor. Se o conseguir fazer, execute qualquer pedido. Se as consultas demorarem demasiado tempo a processar, pode otimizar o MySQL utilizando um script especial MySQLTuner. Normalmente, aumente o tamanho do pool do motor InnoDB definindo o parâmetro innodb_buffer_pool_size. O valor ótimo é determinado utilizando o script acima.

Se for 800 megabytes (pode ser qualquer outro tamanho), defina-o:

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

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

Existe outra forma de resolver o problema. Para o efeito, o tempo de resposta do servidor é aumentado. Para efetuar esta tarefa, é necessário alterar o parâmetro wait_timeout. Este é o tempo, em segundos, durante o qual deve esperar por uma resposta do servidor.

Por exemplo:

wait_timeout=500

параметр wait_timeout

Ao efetuar alterações, não se esqueça de reiniciar o servidor de seguida:

$ sudo systemctl restart mysql

Ou:

$ sudo systemctl restart mariadb

Um pacote demasiado grande

Quando o cliente de um utilizador cria demasiados pacotes, o servidor gera este erro. O tamanho do pacote disponível (valor máximo) pode ser aumentado utilizando o parâmetro max_allowed_packet.

Por exemplo:

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

Preste especial atenção ao cliente, porque se ele enviar muitos pedidos, é óbvio que está a fazer algo de errado. Pelo menos, não gere consultas para o MySQL utilizando loops for.

O servidor foi incorretamente inicializado

Se decidir implementar o MySQL ou o MariaDB no Docker, prepare-se para encontrar um erro semelhante. A inicialização do contentor requer um pouco mais de tempo livre. Se não deixar o contentor concluir a inicialização, parando-o e iniciando-o primeiro, a base de dados devolverá sempre este erro. A solução é remover completamente os dados do contentor da base de dados.

Isto é feito da seguinte forma:

$ docker-compose down

ou:

$ docker rm mysql-container

Em seguida, é necessário eliminar o armazenamento (volume) com a base de dados incorretamente inicializada. Mas, no início, consulte a lista de todos os armazenamentos:

$ docker volume ls

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

Após a eliminação:

$ docker volume rm volume_name

Agora pode começar a inicializar a aplicação, basta esperar que o servidor de base de dados lhe diga que está pronto e que pode ligar-se a ele.