Erro em acesso ao banco de dados com internet lenta
Enviado: 25 Jul 2014 01:00
Colegas,
Estou viajando (no Chile), acessando à internet pelo wi-fi do hotel, que é muito, mas muito ruim. Em razão disso, estou tendo bastante dificuldade de acesso ao banco de dados MySQL em meu provedor. Até aí tudo normal.
O problema é que, quando a internet cai, dá erro no programa:
Também dá pra entender que se perca a conexão ao banco de dados quando a internet cai, obviamente.
Minha dúvida é: será que não tem como evitar que dê erro no programa por isso? A conexão poderia resultar .f., mas não precisaria dar erro no programa.
Minha função está assim:
Tudo que eu preciso é evitar que o programa dê erro. Se não funcionar a conexão, não tem problema.
Outro problema que estou tendo pelo mesmo motivo é que, frequentemente, o programa trava na conexão ao banco de dados. Não retorna .f., mas também não avança. Fica infinitamente travado.
Alguém me ajudaria?
Estou viajando (no Chile), acessando à internet pelo wi-fi do hotel, que é muito, mas muito ruim. Em razão disso, estou tendo bastante dificuldade de acesso ao banco de dados MySQL em meu provedor. Até aí tudo normal.
O problema é que, quando a internet cai, dá erro no programa:
Ocorreu o erro: Error SDDODBC/1903 08S01 [MySQL][ODBC 3.51 Driver][mysqld-5.6.10-log]Lost connection to MySQL server during query:
Também dá pra entender que se perca a conexão ao banco de dados quando a internet cai, obviamente.
Minha dúvida é: será que não tem como evitar que dê erro no programa por isso? A conexão poderia resultar .f., mas não precisaria dar erro no programa.
Minha função está assim:
if conexsql()=.f.
Return .f.
endif
DBUSEAREA( .T.,, "SELECT * FROM recado WHERE visto='S' OR (usuario='I' AND visto='N') LIMIT 10", "recado" )
...
function conexsql
LOCAL nConnection, disconnection
local nvz :=0
RDDSETDEFAULT( "SQLMIX" )
nConnection := RDDINFO( 1001, { "ODBC", "Server=mysql.xxx.com.br;Driver={MySQL ODBC 3.51 Driver};dsn=;User=xxx;pwd=xxx;database=xxx;" } )
do while .t.
IF nConnection == 0
nvz++
if nvz>1
@ maxrow()-1,1 clear to maxrow()-1,maxcol()-1
@ maxrow()-1,1 say "Tentando conexão com o servidor; aguarde..."
endif
inkey(nvz*2)
if nvz>3 .or. (nvz>0 .and. nrtsql>0 .and. ("TAREFAS"$upper(Hb_CmdArgArgV()) .or. "AGENDA"$upper(Hb_CmdArgArgV())))
RDDSETDEFAULT( "DBFNTX" )
nrtsql++
Return .f.
endif
else
exit
endif
enddo
return .t.
Tudo que eu preciso é evitar que o programa dê erro. Se não funcionar a conexão, não tem problema.
Outro problema que estou tendo pelo mesmo motivo é que, frequentemente, o programa trava na conexão ao banco de dados. Não retorna .f., mas também não avança. Fica infinitamente travado.
Alguém me ajudaria?