Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Error Code: 2013. Lost connection to MySQL server during query

Bom dia a todos

Não sei se é realmente necessário, mas acho que pode ser interessante acrescentar uma atividade falando sobre esse erro que pode ocorrer durante o while.

Eu percebi isso quando resolvi fazer um teste onde o while não teria fim, fazendo a função deste jeito:

CREATE DEFINER=`root`@`localhost` PROCEDURE `looping_while_error`(valor_inicial int, valor_final int)
BEGIN
    declare contador int;
    delete from looping;
    set contador = valor_inicial;
    while contador <= valor_final
    do 
    insert into looping values (contador);
//tirei o acrescimo do contador e ele vai ficar no mesmo valor para sempre
    end while;
    select * from looping;
END

E depois de um tempo (uns 30s), o MySQL interrompeu essa função que estava rodando, e mostrou essa mensagem:

call looping_while_error(5,40)	Error Code: 2013. Lost connection to MySQL server during query	30.016 sec

Pode ser interessante citar por ser um erro que pode ser comum, pelo fato de colocar uma condição impossível de chegar no while ou não colocar uma ação dentro do do para fazer a condição ser alcançada

Ps: eu quis citar isso porque todos os cursos que eu vi que mostravam o while (lógica de programação e/ou introdução à uma linguagem de programação), sempre citava esse ponto de ter uma maneira do while finalizar para não sobrecarregar e/ou crashar a aplicação

1 resposta
solução!

Oi

É realmente importante abordar esse tipo de erro que pode ocorrer durante um loop while. De fato, é possível que um loop while não termine se a condição não for alcançada ou se não houver uma instrução dentro do bloco do while que faça a condição ser alcançada.

No exemplo que você forneceu, o loop while não tem uma instrução para incrementar o contador. Isso faz com que o contador permaneça no mesmo valor para sempre, resultando em um loop infinito. Em alguns casos, um loop infinito pode sobrecarregar o sistema ou causar a perda de conexão com o servidor de banco de dados, como aconteceu no seu teste.

É sempre importante ter cuidado ao usar loops while (e qualquer tipo de loop) para evitar loops infinitos ou loops que possam causar problemas de desempenho.