Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LuX_

[Resolvido] Mysql server has gone away

Recommended Posts

Galera. Seguinte, comecei a tentar conectar o delphi com banco de dados online mysql.

 

Usei os seguintes componentes. [usei a ZEOSLIB]

 

ZConnection

DataSource

Zquery.

 

Além do dbnavigator e o BDGrid

Porém, qualquer ação que eu faço com o banco de dados, as vezes me retorna o erro: "Mysql Server has gone away"

 

Mas isso é só as vezes...

As vezes ele faz tudo direitinho.

Porém quando dá o erro (pode ser um select, update, insert, tanto faz) ele mostra o erro e não importa quantas vezes eu tente ele continua dando.

Ai eu tenho que reiniciar a aplicação para, quem sabe, dar certo.

alguém sabe como proceder?

 

Ou alguém sabe uma forma melhor pra conectar com o banco mysql?

Valeu galera!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse erro geralmente ocorre porque o seu programa perdeu a conexão com o banco de dados, conforme explicado no próprio manual do MySQL, neste link

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehe, isso msm.. a conexão, por algum erro, cai. Tambem tive esse problema, ai o Chrnos me deu uma dica, e fiz e funciono.. Toda vez que você faz uma requisição, fecha a conexão e abre de novo.. : D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok Galera. Entendi o erro, porém o que eu posso fazer para driblá-lo?

Ele aparece de vez em quando e sou obrigado a reiniciar a aplicação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu Galera. Fiz como o nosso amigo logo acima falou. Fechei e abri a conexão pra cada requisição e rodou boniiiito!

abraço pessoal

IMASTERS O MELHOR FORUM DE T.I DO BRASIIIIL!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros,

Desculpa ressuscitar este tópico só que eu estava com o mesmo problema e procurei no Google uma resposta e sempre sem resultado, o interessante é que este tópico resolveu todo meu problema e fui achar na pagina 4945994359 do google.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode aplicar esta dica de diversas formas, no próprio evento das tabelas e query adicionar a opção de desconectar/conectar.

 

Mas eu estava com um projeto que tinha mais 30 componentes ZQuery, fazer alteração em todos os componentes, iria acabar com meu projeto, e também daria um trampo ferrado!!!

 

Então achei uma solução melhor, coloquei um componente ZSQLMonitor, coloquei pra salvar um arquivo e esperei o erro acontecer. Assim que o mesmo aconteceu capturei o CodeErro e a mensagem de erro. A partir deste ponto, fiz um tratamento. Que sempre que este erro acontece-se ele disconecta e reconectava o banco.

 

Desta forma, a mensagem de ERRO aparece e na minha opinião ela tem que aparecer mesmo, pois e um alerta que ocorreu uma desconeção com o banco de dados e você precisa saber disso, ou pelomenos o usuário precisa ser notificado sobre isso. Suponha que ele tirou o cabo de rede? Nunca vai conectar. E ficar conectando/desconectando antes, vai gerar o mesmo erro.

 

1 - Quando o ZSQLMonitor disparar o erro, você conecta/desconecta o banco, a mensaem será exibida, mas na próxima tentativa o seu cliente consegue conectar.

 

Ou não utilizar o ZSQLMonitor mas utilizar o TApplicationEvents, fica na Guia "Additional" (Delphi7), você coloca esse componente no form principal e configura a evento Exception, primeiro coloca um showmessage('Peguei erro: '+E.Message); Será exibido o seu erro, coloca um break point neste local, selecina essa variavel message e aperta Ctrl+F7 para pegar o valor que esta lá e utiliza ele para comparar na hora que o erro acontecer. Pronto! quando o erro acontecer, você conecta e desconectar e ainda pode exibir uma mensagem personalizada para o seu cliente, tipo: "A conexão foi perdida. Tente novamente!"

 

Eu utilizei essas duas formas e funcionou normalmente.

 

Qualquer dúvida e so enviar mensagem, abraço a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.