Mysql-Maximum statement Execution time Exceeded 0x80004005

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Ruben Dario
Usuário Nível 3
Usuário Nível 3
Mensagens: 127
Registrado em: 14 Jun 2015 23:19
Localização: Colombia

Mysql-Maximum statement Execution time Exceeded 0x80004005

Mensagem por Ruben Dario »

Saludos al forum
cuando ejecuto una sentencia SQL algo compleja y me da el error

Algun usuario le ha pasado esto.
Cuando ejecuto un Query, me da este error
Query Execution was interrumped , Maximum statement Execution time Exceeded 0x80004005

Uso Windows 10 64 bits
MySQL Server 5.7 64 bits
Connector ODBC 5.3 32 bits


Si doy la misma sentencia desde la consola de mysql funciona se demora 2 min 37.56 sec
Si uno Navicat Funciona.

Pero desde el programa ejecutable usando ADO no funciona genera el error
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mysql-Maximum statement Execution time Exceeded 0x80004005

Mensagem por JoséQuintas »

timeout?

Código: Selecionar todos

   cnConnection:CommandTimeOut    := 200 // seconds
   cnConnection:ConnectionTimeOut := 200 // seconds
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Ruben Dario
Usuário Nível 3
Usuário Nível 3
Mensagens: 127
Registrado em: 14 Jun 2015 23:19
Localização: Colombia

Mysql-Maximum statement Execution time Exceeded 0x80004005

Mensagem por Ruben Dario »

Gracias.
Pero sigue el mismo problema.

asi hago la conexion

Código: Selecionar todos

              oApp:oServer        := TOLEAUTO():New("ADODB.connection") 
              oApp:oADOStream     := TOLEAUTO():New("ADODB.Stream") 
              oApp:oADOIndex      := TOLEAUTO():New("ADOX.Index") 
              oApp:oADOCatalog    := TOLEAUTO():New("ADOX.Catalog") 
              oApp:oServer:CommandTimeOut    := 200  //200  15 
              oApp:oServer:ConnectionTimeOut := 200   //30   10   
              oApp:oServer:CursorLocation    := adUseClient 
              oApp:oServer:Mode              := adModeShareDenyNone 
              oApp:oServer:Open( oApp:StrConnection ) 

              oApp:oADOoSql := TOleAuto():New("ADODB.Command")
              oApp:oADOoSql:CommandType := adCmdText
              oApp:oADOoSql:ActiveConnection := oApp:oServer

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mysql-Maximum statement Execution time Exceeded 0x80004005

Mensagem por JoséQuintas »

Uso de um modo mais simples, no Harbour, não sei se faz diferença nisso, mas não tenho query tão demorada.

Código: Selecionar todos

cnConnection := win_OleCreateObject( "ADODB.Connection" )
cnConnection:ConnectionString := "dfdfdfdfdfdfd"
cnConnection:CursorLocation := AD_USE_CLIENT
cnConnection:CommandTimeOut := 600
cnConnection:ConnectionTimeOut := 600

rs := cnConnection:Execute( "SELECT COUNT(*) AS QTD FROM CLIENTES" )

? oRs:Fields( "QTD" ):Value
rs:Close()
cnConnection:Close()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Ruben Dario
Usuário Nível 3
Usuário Nível 3
Mensagens: 127
Registrado em: 14 Jun 2015 23:19
Localização: Colombia

Mysql-Maximum statement Execution time Exceeded 0x80004005

Mensagem por Ruben Dario »

Gracias, pero no funciona, dice que la conexion no esta activa, parece que falta algo.

en realidad nunca he manejado win_OleCreateObject( "ADODB.Connection" ) siempre he manejado TOLEAUTO():New("ADODB.connection") y TOleAuto():New( "ADODB.Recordset" )
que diferencia hay entre manejar win_OleCreateObject y TOLEAUTO():New("ADODB.connection") en realidad no veo o documentacion.

gracias por tu ayuda pero me interesa el tema segun dices o te entiendo es mas rapido win_OleCreateObject que OLEAUTO():
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mysql-Maximum statement Execution time Exceeded 0x80004005

Mensagem por JoséQuintas »

Cometi um erro, esqueci de abrir a conexão.

Código: Selecionar todos

cnConnection:Open()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mysql-Maximum statement Execution time Exceeded 0x80004005

Mensagem por JoséQuintas »

Não sei se é mais rápido, apenas sempre usei assim.

Mas não dá pra otimizar essa query?
Talvez o limite de tempo de uma query seja diferente quando executada em console.

Verifique se há alguma configuração de limite de tempo.
Verifique se foi configurado um cache no servidor MySQL muito pequeno, o que causaria lentidão.
A configuração é diferente entre Innodb e MyISAM.

Quantos milhões de registros estão sendo usados pra atender essa query?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Ruben Dario
Usuário Nível 3
Usuário Nível 3
Mensagens: 127
Registrado em: 14 Jun 2015 23:19
Localização: Colombia

Mysql-Maximum statement Execution time Exceeded 0x80004005

Mensagem por Ruben Dario »

Gracias.
Si funciona con tu codigo.
El que tenia funciona pero cuando son Querin muy grandes genera el error de tiempor mira el codigo qu me genera el error.

Código: Selecionar todos

              oApp:oServer        := TOLEAUTO():New("ADODB.connection")
               
              oApp:oADOStream     := TOLEAUTO():New("ADODB.Stream") 
              oApp:oADOIndex      := TOLEAUTO():New("ADOX.Index") 
              oApp:oADOCatalog    := TOLEAUTO():New("ADOX.Catalog") 
              
              oApp:oServer:CommandTimeOut    := 200  //200  15   300
              oApp:oServer:ConnectionTimeOut := 30   //30   10  300 
              oApp:oServer:CursorLocation    := adUseClient 
              oApp:oServer:Mode              := adModeShareDenyNone 
              oApp:oServer:Open( oApp:StrConnection ) 

              oApp:oADOoSql := TOleAuto():New("ADODB.Command")
              oApp:oADOoSql:CommandType := adCmdText
              oApp:oADOoSql:ActiveConnection := oApp:oServer   
                                        
            cQuery := "SELECT  * ...." " 

              oApp:oServer:CommandText:=cQuery
              base :=  oApp:oServer:Execute()  //?oDatos:RecordCount()*/
            	? alert(loco:Fields( "nombre" ):Value  )
              base:Close()

Uso ADODB.Command para generar lo Querin este es el del problema.

Gracias, voy a Implementar tu ejemplo, no lo conocia. Gracias.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mysql-Maximum statement Execution time Exceeded 0x80004005

Mensagem por JoséQuintas »

E com win_OleCreateObject? mesmo erro?
Pelo menos tira a dúvida se o problema está em TOLEAUTO(), ou no uso de ADODB.Command

Código: Selecionar todos

oApp:oServer    := win_OleCreateObject( "ADODB.connection" )
oApp:oADOStream  := win_OleCreateObject( "ADODB.Stream" ) 
oApp:oADOIndex   := win_OleCreateObject( "ADOX.Index" ) 
oApp:oADOCatalog  := win_OleCreateObject( "ADOX.Catalog" ) 
oApp:oServer:CommandTimeOut  := 200 //200 15 300
oApp:oServer:ConnectionTimeOut := 30 //30 10 300 
oApp:oServer:CursorLocation  := adUseClient 
oApp:oServer:Mode       := adModeShareDenyNone 
oApp:oServer:Open( oApp:StrConnection ) 

oApp:oADOoSql := win_OleCreateObject( "ADODB.Command" )
oApp:oADOoSql:CommandType := adCmdText
oApp:oADOoSql:ActiveConnection := oApp:oServer 
                    
cQuery := "SELECT * ...." " 

oApp:oServer:CommandText:=cQuery
base := oApp:oServer:Execute() //?oDatos:RecordCount()*/
? alert( loco:Fields( "nombre" ):Value )
base:Close()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Ruben Dario
Usuário Nível 3
Usuário Nível 3
Mensagens: 127
Registrado em: 14 Jun 2015 23:19
Localização: Colombia

Mysql-Maximum statement Execution time Exceeded 0x80004005

Mensagem por Ruben Dario »

Gracias
Si segun veo tu ejemplo no es necesario usar ADODB.Command

Pero Tampoco usas el ADODB.Recordset
Responder