Página 1 de 1
Mysql-Maximum statement Execution time Exceeded 0x80004005
Enviado: 19 Out 2016 22:41
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
Mysql-Maximum statement Execution time Exceeded 0x80004005
Enviado: 20 Out 2016 01:27
por JoséQuintas
timeout?
Código: Selecionar todos
cnConnection:CommandTimeOut := 200 // seconds
cnConnection:ConnectionTimeOut := 200 // seconds
Mysql-Maximum statement Execution time Exceeded 0x80004005
Enviado: 20 Out 2016 14:37
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
Mysql-Maximum statement Execution time Exceeded 0x80004005
Enviado: 20 Out 2016 15:40
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()
Mysql-Maximum statement Execution time Exceeded 0x80004005
Enviado: 20 Out 2016 18:40
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():
Mysql-Maximum statement Execution time Exceeded 0x80004005
Enviado: 20 Out 2016 19:14
por JoséQuintas
Cometi um erro, esqueci de abrir a conexão.
Mysql-Maximum statement Execution time Exceeded 0x80004005
Enviado: 20 Out 2016 19:29
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?
Mysql-Maximum statement Execution time Exceeded 0x80004005
Enviado: 20 Out 2016 22:28
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.
Mysql-Maximum statement Execution time Exceeded 0x80004005
Enviado: 20 Out 2016 23:01
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()
Mysql-Maximum statement Execution time Exceeded 0x80004005
Enviado: 20 Out 2016 23:51
por Ruben Dario
Gracias
Si segun veo tu ejemplo no es necesario usar ADODB.Command
Pero Tampoco usas el ADODB.Recordset