ERRO MYSQL VERSAO 5.01
Olá colegas,
Estou me deparando com um erro que acredito pouco comum, pois, quando rodo a aplicação e conecto ao banco de dados do mysql, acesso normalmente, e em determinados momentos está dando o erro abaixo, e eu não sei como resolver alguém já se deparou com isto? acontece quando faço um select em um determinada tabela ao tentar abrir o resultado está dando o erro abaixo, após está o código.
Run-Time erro: ‘-2147467259(80004005)’:
[MySQL][IDBC 5.1 Driver][mysqld-5.0.91-community]MySQL server has gone away
código:
Set RSMySQL = New ADODB.Recordset
[ô]Prepara o recordset
RSMySQL.CursorType = adOpenStatic
[ô]Este é o unico tipo de cursor a ser usado
[ô]com um cursor localizado no lado do cliente
RSMySQL.CursorLocation = adUseClient
[ô]estamos usando o cursor no cliente
RSMySQL.LockType = adLockPessimistic
[ô]Isto garente que o registros que esta sendo editado
[ô]pode ser salvo
RSMySQL.Source = [Ô]Select * From arquivos Where Id = [ô][Ô] + ListView2.ListItems(i).Text + [Ô][ô][Ô]
[ô]a fonte de dados usamos uma instrucal SQL
RSMySQL.ActiveConnection = cn
[ô]O recordset precisa saber qual a conexao em uso
RSMySQL.Open <---- aqui ocorre o erro
A Conexão com o Banco foi feito com mostra abaixo e funciona para outros selects.
mySqlIP = [Ô]001.00.00.00[Ô] [ô] a localizacao do usuario (localhost)
usr_id = [Ô]usuario[Ô] [ô] identificacao
pass = [Ô]senhal[Ô] [ô] senha
strDataBaseName = [Ô]Banco[Ô]
Set cn = New ADODB.Connection
strConnect = [Ô]driver=MySql ODBC 5.1 Driver;server=[Ô] & mySqlIP & [Ô];uid=[Ô] & usr_id & [Ô];pwd=[Ô] & pass & [Ô];database=[Ô] & strDataBaseName & [Ô][Ô]
Set cn = New ADODB.Connection
[ô]preparando o objeto connection
cn.ConnectionString = strConnect
cn.Open
cn.CursorLocation = adUseClient
O mais estranho é que fiz todos os teste de forma local e funciona normalmente, quando passo os parametros do banco que está hospedado no servidor está acontecendo isto, alguém poderia me ajudar?
Estou me deparando com um erro que acredito pouco comum, pois, quando rodo a aplicação e conecto ao banco de dados do mysql, acesso normalmente, e em determinados momentos está dando o erro abaixo, e eu não sei como resolver alguém já se deparou com isto? acontece quando faço um select em um determinada tabela ao tentar abrir o resultado está dando o erro abaixo, após está o código.
Run-Time erro: ‘-2147467259(80004005)’:
[MySQL][IDBC 5.1 Driver][mysqld-5.0.91-community]MySQL server has gone away
código:
Set RSMySQL = New ADODB.Recordset
[ô]Prepara o recordset
RSMySQL.CursorType = adOpenStatic
[ô]Este é o unico tipo de cursor a ser usado
[ô]com um cursor localizado no lado do cliente
RSMySQL.CursorLocation = adUseClient
[ô]estamos usando o cursor no cliente
RSMySQL.LockType = adLockPessimistic
[ô]Isto garente que o registros que esta sendo editado
[ô]pode ser salvo
RSMySQL.Source = [Ô]Select * From arquivos Where Id = [ô][Ô] + ListView2.ListItems(i).Text + [Ô][ô][Ô]
[ô]a fonte de dados usamos uma instrucal SQL
RSMySQL.ActiveConnection = cn
[ô]O recordset precisa saber qual a conexao em uso
RSMySQL.Open <---- aqui ocorre o erro
A Conexão com o Banco foi feito com mostra abaixo e funciona para outros selects.
mySqlIP = [Ô]001.00.00.00[Ô] [ô] a localizacao do usuario (localhost)
usr_id = [Ô]usuario[Ô] [ô] identificacao
pass = [Ô]senhal[Ô] [ô] senha
strDataBaseName = [Ô]Banco[Ô]
Set cn = New ADODB.Connection
strConnect = [Ô]driver=MySql ODBC 5.1 Driver;server=[Ô] & mySqlIP & [Ô];uid=[Ô] & usr_id & [Ô];pwd=[Ô] & pass & [Ô];database=[Ô] & strDataBaseName & [Ô][Ô]
Set cn = New ADODB.Connection
[ô]preparando o objeto connection
cn.ConnectionString = strConnect
cn.Open
cn.CursorLocation = adUseClient
O mais estranho é que fiz todos os teste de forma local e funciona normalmente, quando passo os parametros do banco que está hospedado no servidor está acontecendo isto, alguém poderia me ajudar?
Amigo, confome documentação da MYSQL, é a perca de conexão do servidor mysql sql, precisa conectar e desconectar do banco,
segue Tradução Documentação MYSQL
Eu ja enfrentei isso, nunca deixe aberto um conexão, abre e fecha, principalmente em servidor web você vai ter este problema.
segue Tradução Documentação MYSQL
Eu ja enfrentei isso, nunca deixe aberto um conexão, abre e fecha, principalmente em servidor web você vai ter este problema.
OK, eu já faço isto, abro(open) o select e após fecho(close), inclusive agora estou antes de cada rotina com o mysql estarei abrindo e fechando a conexão com o bando de dados, isto resolve?. Bem além do relatado, também ocorre que, quando faço um select em uma tabela consigo manipular os resultado sem problemas, agora se preciso fazer um segundo select em outra tabela com outro recordset, o mysql até abre como se tudo funcionasse bem mais não traz o resultado da consulta, e ainda, não dá erro nenhum durante a execução só mostrando o mesmo quando uso o debug do VB6, então quando verifico se retornou algum registro é mostrado a mensagem abaixo:
Run-Time error: 3265
O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado
Como utilizo o mysql recentemente e não tenho muita experiência e ainda não tenho nenhuma noção de como possa resolver isto, alguém saberia?
O que percebo é que se eu fizer com consulta em uma tabela com o resultado dela, se eu precisar usar outro select de outra tabela o mysql não está permitindo, ou seja, seria por exemplo se eu consultasse uma tabela de cliente(ai ele mostra normalmente todos os registros) e dentre os campos dos clientes tivesse o campo banco(numerico) e agencia(numerico) e precisasse, baseado nestes campos selecionar em outra tabela chamada banco através de outra consulta e ai está acontecendo o informado acima. Para exemplificar melhor abaixo segue o código que está acontecendo:
Codigo abaixo usa dois record set um é RSmSQL(tabela arquivos) e outro RSmSQL_tmp(tabela usuarios):
Do While Not RSmSQL.EOF
ListView2.ForeColor = 3
Set lst = ListView2.ListItems.Add
On Error Resume Next
With lst
.Text = RSmSQL([Ô]Id[Ô])
.SubItems(1) = RSmSQL([Ô]Nome[Ô])
ListView2.ListItems(ListView2.ListItems.Count).ListSubItems(1).ForeColor = vbBlue
.SubItems(2) = RSmSQL([Ô]Descricao[Ô])
mySqlIP = [Ô]000.00.00.00[Ô] [ô] a localizacao do usuario (localhost)
usr_id = [Ô]usu[Ô] [ô] identificacao
pass = [Ô]senha[Ô] [ô] senha
strDataBaseName = [Ô]BD[Ô]
strConnect = [Ô]driver=MySql ODBC 5.1 Driver;server=[Ô] & mySqlIP & [Ô];uid=[Ô] & usr_id & [Ô];pwd=[Ô] & pass & [Ô];database=[Ô] & strDataBaseName & [Ô][Ô]
Set cn = New ADODB.Connection
[ô]preparando o objeto connection
cn.ConnectionString = strConnect
cn.Open
cn.CursorLocation = adUseClient
[ô]usamos um cursor do lado do cliente pois os dados
[ô]serao acessados na maquina do cliente e nao de um servidor
Set RSmSQL_tmp = New ADODB.Recordset
[ô]Prepara o recordset
RSmSQL_tmp.CursorType = adOpenStatic
[ô]Este é o unico tipo de cursor a ser usado
[ô]com um cursor localizado no lado do cliente
RSmSQL_tmp.CursorLocation = adUseClient
[ô]estamos usando o cursor no cliente
RSmSQL_tmp.LockType = adLockPessimistic
[ô]Ist garente que o registros que esta sendo editado
[ô]pode ser salvo
RSmSQL_tmp.Source = [Ô]Select * From usuarios where Id_Usuario = [Ô] & Val(RSmSQL([Ô]Id_Origem[Ô]))
RSmSQL.ActiveConnection = cn
[ô]O recordset precisa saber qual a conexao e
RSmSQL_tmp.Open
[ô]abre o recordset com isto o evento MoveComplete sera disparado
If Not RSmSQL_tmp.EOF Then <--- O ERRO OCORRE AQUI OU SEJA, NÃO TRAZ REGISTROS!!
.SubItems(3) = RSmSQL_tmp([Ô]Usu_Nome[Ô]) <--- CADA RESULTADO DO CAMPO CONTéM O ERRO ACIMA
Else
.SubItems(3) = [Ô]Não Existe[Ô]
End If
.SubItems(4) = Format(RSmSQL([Ô]Data[Ô]), [Ô]DD/MM/YYYY[Ô])
.SubItems(5) = RSmSQL_tmp([Ô]Usu_Cod_Banco[Ô])
.SubItems(6) = RSmSQL_tmp([Ô]Usu_Cod_Agencia[Ô])
End With
RSmSQL.MoveNext
Loop
Será que algém poderia me ajudar?
Run-Time error: 3265
O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado
Como utilizo o mysql recentemente e não tenho muita experiência e ainda não tenho nenhuma noção de como possa resolver isto, alguém saberia?
O que percebo é que se eu fizer com consulta em uma tabela com o resultado dela, se eu precisar usar outro select de outra tabela o mysql não está permitindo, ou seja, seria por exemplo se eu consultasse uma tabela de cliente(ai ele mostra normalmente todos os registros) e dentre os campos dos clientes tivesse o campo banco(numerico) e agencia(numerico) e precisasse, baseado nestes campos selecionar em outra tabela chamada banco através de outra consulta e ai está acontecendo o informado acima. Para exemplificar melhor abaixo segue o código que está acontecendo:
Codigo abaixo usa dois record set um é RSmSQL(tabela arquivos) e outro RSmSQL_tmp(tabela usuarios):
Do While Not RSmSQL.EOF
ListView2.ForeColor = 3
Set lst = ListView2.ListItems.Add
On Error Resume Next
With lst
.Text = RSmSQL([Ô]Id[Ô])
.SubItems(1) = RSmSQL([Ô]Nome[Ô])
ListView2.ListItems(ListView2.ListItems.Count).ListSubItems(1).ForeColor = vbBlue
.SubItems(2) = RSmSQL([Ô]Descricao[Ô])
mySqlIP = [Ô]000.00.00.00[Ô] [ô] a localizacao do usuario (localhost)
usr_id = [Ô]usu[Ô] [ô] identificacao
pass = [Ô]senha[Ô] [ô] senha
strDataBaseName = [Ô]BD[Ô]
strConnect = [Ô]driver=MySql ODBC 5.1 Driver;server=[Ô] & mySqlIP & [Ô];uid=[Ô] & usr_id & [Ô];pwd=[Ô] & pass & [Ô];database=[Ô] & strDataBaseName & [Ô][Ô]
Set cn = New ADODB.Connection
[ô]preparando o objeto connection
cn.ConnectionString = strConnect
cn.Open
cn.CursorLocation = adUseClient
[ô]usamos um cursor do lado do cliente pois os dados
[ô]serao acessados na maquina do cliente e nao de um servidor
Set RSmSQL_tmp = New ADODB.Recordset
[ô]Prepara o recordset
RSmSQL_tmp.CursorType = adOpenStatic
[ô]Este é o unico tipo de cursor a ser usado
[ô]com um cursor localizado no lado do cliente
RSmSQL_tmp.CursorLocation = adUseClient
[ô]estamos usando o cursor no cliente
RSmSQL_tmp.LockType = adLockPessimistic
[ô]Ist garente que o registros que esta sendo editado
[ô]pode ser salvo
RSmSQL_tmp.Source = [Ô]Select * From usuarios where Id_Usuario = [Ô] & Val(RSmSQL([Ô]Id_Origem[Ô]))
RSmSQL.ActiveConnection = cn
[ô]O recordset precisa saber qual a conexao e
RSmSQL_tmp.Open
[ô]abre o recordset com isto o evento MoveComplete sera disparado
If Not RSmSQL_tmp.EOF Then <--- O ERRO OCORRE AQUI OU SEJA, NÃO TRAZ REGISTROS!!
.SubItems(3) = RSmSQL_tmp([Ô]Usu_Nome[Ô]) <--- CADA RESULTADO DO CAMPO CONTéM O ERRO ACIMA
Else
.SubItems(3) = [Ô]Não Existe[Ô]
End If
.SubItems(4) = Format(RSmSQL([Ô]Data[Ô]), [Ô]DD/MM/YYYY[Ô])
.SubItems(5) = RSmSQL_tmp([Ô]Usu_Cod_Banco[Ô])
.SubItems(6) = RSmSQL_tmp([Ô]Usu_Cod_Agencia[Ô])
End With
RSmSQL.MoveNext
Loop
Será que algém poderia me ajudar?
Tópico encerrado , respostas não são mais permitidas