Autor Tema: Se desconecta MySQL  (Leído 5755 veces)

0 Usuarios y 1 Visitante están viendo este tema.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2851
  • Reputación: +159/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Se desconecta MySQL
« en: Junio 12, 2012, 03:02:26 am »
Haciendo mis pininos con este motor me encuentro con un problemilla.
En www.freemysql.cree la BD y usando SQLYog cree las tablas y meti unos registros y todo bien.

Ahora, con vb6 uso esta conexión
Código: Visual Basic
  1. Public db As ADODB.Connection
  2. Public rs As ADODB.Recordset
Código: Visual Basic
  1. Private Sub Conectar()
  2. Set db = New ADODB.Connection
  3. Set rs = New ADODB.Recordset
  4.    
  5. rs.CursorLocation = adUseClient
  6. db.ConnectionString = "Driver={MySQL ODBC 5.1 Driver};Server=SQL09.FREEMYSQL.NET;Database=bdyacosta01; User=miusuario;Password=mipassword;Option=3;"
  7. db.Open
  8. End Sub
  9.  
Lo primero: Para que sirve ¿Option = 3? he buscado y me perdi mas porque en otros ejemplos en la web he encontrado que usan OPTION=16427 o OPTION=16384 ???? que vaina??

Bueno, siguiendo con el codigo:

Me conecto:
Código: Visual Basic
  1. Private Sub Form_Load()
  2. Conectar
  3. Dim rs As New ADODB.Recordset
  4. rs.Open "SELECT * FROM MITABLA", db, 1, 1
  5. Set Grid1.DataSource = rs
  6. End Sub
  7.  
Y excelente!!!.
Ahora, pongo un par de textbox y un boton para meter registros y en el boton tengo esto:
Código: Visual Basic
  1. Private Sub Command1_Click()
  2. db.BeginTrans
  3. db.Execute "INSERT INTO MITABLA(NOMBRE, DIRECCION) VALUES ('" & Text1 & "', '" & Text2 & "')"
  4. db.CommitTrans
  5.  
  6. Dim rs As New ADODB.Recordset  'Esto para recargar y verlo de una vez.
  7. rs.Open "SELECT * FROM MITABLA", db, 1, 1
  8. Set Grid1.DataSource = rs
  9. End Sub
  10.  

Pruebo el codigo y ya estoy saltando de alegria porque funciona bien, por medir la velocidad de los insert hago varios clic y la respuesta es deseable, dejo de hacerlo por unos 10 segundos y al volver a hacer clic me sale esto:



Entonces como nunca me había pasado esto con mi otro motor debe ser que me falta definir algo, porque cada 10 segundos +/- al intentar grabar me sale ese error en el insert, ¿por defecto MySQL tiene un tiempo de espera?¿Donde lo redefino? porque usualmente la aplicación la podre tener abierta horas tal como lo hago actualmente con mi otro motor y creo que con cualquiera.

Gracias
Me encuentras en YAcosta.com

raul338

  • Terabyte
  • *****
  • Mensajes: 896
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Se desconecta MySQL
« Respuesta #1 en: Junio 12, 2012, 03:03:24 pm »
MySQL tiene un tiempo de conexion, en local hasta hace algunas versiones era de 8 horas, en la version 5.5 lo redujeron a 5minutos. En Online siempre lo reducen a una sola consulta por ejemplo, esto cuando vos abrís haces un par de consultas en poco tiempo y se cierra. esto es porque sino el host se satura de muchas conexiones. Así sucede en PHP, por cada vez que pones una pagina, la conexion dura como mucho un par segundos :P

En Vb6 con mysql online es recomendable conectar y desconectarse ante cada consulta. Ojo, solo cuando es online, cuando tenes el servidor en tu propia red, mantené la conexion abierta siempre

ssccaann43

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 969
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:Se desconecta MySQL
« Respuesta #2 en: Junio 12, 2012, 04:31:26 pm »
Eso nunca me habia pasado. Yo desarrolle un BOT para un cliente que tomaba la información de SQL Server y registro por registro lo insertaba en MySQL en la nube. No tuve que conectarme y desconectarme, simplemente aperturaba mi conex y hasta que no finalizara, no cerraba la conex. Que raro eso.
Miguel Núñez.

raul338

  • Terabyte
  • *****
  • Mensajes: 896
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Se desconecta MySQL
« Respuesta #3 en: Junio 12, 2012, 10:08:50 pm »
Mira: Wait_Timeout - System Variables

En realidad depende de cada host. Si es "en la nube" claramente esta preparado para conexiones pesadas. Pero Yvan esta en un hosting compartido :P no tiene dedicado así que no puede pedir mucho (supongo que es así, sino, podes configurarlo o algo más tiene que haber). Tampoco se si el puede configurar esa variable, es depende del host

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2851
  • Reputación: +159/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Se desconecta MySQL
« Respuesta #4 en: Junio 13, 2012, 12:37:13 am »
Si ese hosting al ser libre no se le puede pedir nada mas.

En mi host de pago no me permiten conectar un exe a la BD en nube porque me tienen cerrado el puerto y no lo abrirán por temas de seguridad. Pero en otro hosting que también es de pago y que si tienen abierto ese puerto ¿podre pedir que me habiliten mas el tiempo de conexión?. Sino por ultimo, me conecto y desconecto. (obviamente en local siempre abriré una sola vez)
Estoy por responder este mensaje del hosting que no quiere perderme como cliente:
"Respecto al hosting, digame cuales son sus requerimientos y puedo armar un plan a medida con un precio super especial"
Me encuentras en YAcosta.com

raul338

  • Terabyte
  • *****
  • Mensajes: 896
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Se desconecta MySQL
« Respuesta #5 en: Junio 13, 2012, 09:25:35 pm »
Es que en realidad siempre vas a tener que hacerlo, no imagina que lo tenes abierto por 3 dias, vos te pensas que la conexion va a durar? :P siempre tienes que estar abriendo y cerrando ante ese error :P

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1066
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Se desconecta MySQL
« Respuesta #6 en: Junio 14, 2012, 12:18:12 am »
La verdad nunca tube problemas por que yo en local y e internet todas mis conexiones siempre la cierro. Esto no le va a gustar a seba xD se que esta mal pero siempre me funciono. Por eso estoy esperando ancioso el tuto que seba esta preparando para cambiar mis hábitos de programación.

Yo lo tengo así y nunca tube problemas:

En un Modulo:


Código: Visual Basic
  1. Public cnADO As ADODB.Connection    '// Conexion ADO
  2. Public rsADO As ADODB.Recordset     '// RecordSet ADO
  3. Public StrSQL As String             '// Parametro para MySQL
  4. Public ComandoSQL As String         '// Comando MySQL

Código: Visual Basic
  1. 'Conectar a la Base datos
  2.  
  3. Public Sub ConectarADO()
  4.    
  5.     On Error GoTo ErrorHandler
  6.    
  7.     Set cnADO = New ADODB.Connection    '// Crear la nueva conexion
  8.    Set rsADO = New ADODB.Recordset     '// Crear nuevo recordset
  9.    
  10.     rsADO.CursorLocation = adUseClient  '// Tipo de cursor a utilizar
  11.    cnADO.ConnectionString = "Driver={MySQL ODBC 5.1 Driver};Server=184.182.23.43;Database=control_hotel; User=root;Password=" & MDIForm1.lblPass.Caption & ";Option=3;"
  12.     cnADO.Open                          '// Abrir la nueva conexion
  13.            
  14. ErrorHandler:
  15.    
  16.     If Err <> 0 Then
  17.         MsgBox "Error Nº: " & Format(Err.Number, "##,###0") & vbCrLf & vbCrLf & Err.Source & vbCrLf & vbCrLf & Err.Description, vbCritical, "Error"
  18.     End If
  19.  
  20. End Sub
  21.  

Este uso para cerrar la Bd.

Código: Visual Basic
  1. Public Sub CerrarADO()
  2.    
  3.     If Not cnADO Is Nothing Then
  4.    
  5.     Else
  6.         cnADO.Close            '// Cerrar la conexion
  7.        Set cnADO = Nothing    '// Liberar conexion de la memoria
  8.        Set rsADO = Nothing    '// Liberar recorset de la memoria
  9.    End If
  10.    
  11. End Sub


En un Form trayendo datos de la tabla y mostrando en un listview.

Código: Visual Basic
  1. Sub TRAER_CLIENTES()
  2.  
  3.     Me.MousePointer = 11
  4.    
  5.     '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
  6.    '// Aca Conecto a la Base Datos
  7.        Call ConectarADO
  8.     '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
  9.        
  10.         LClientes.ListItems.Clear
  11.         StrSQL = "SELECT * FROM clientes"
  12.         rsADO.Open StrSQL, cnADO, adOpenStatic, adLockOptimistic, adCmdText
  13.         Do Until rsADO.EOF
  14.             Set Lv = LClientes.ListItems.Add()
  15.             With rsADO
  16.                 Lv.Text = Format(.Fields("codigo"), "##,###0")
  17.                 Lv.SubItems(1) = .Fields("cedula")
  18.                 Lv.SubItems(2) = strReplaceVer(.Fields("nombre") & "")
  19.                 rsADO.MoveNext
  20.             End With
  21.         Loop
  22.    
  23.     '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
  24.    '// Aca Cierro la base datos
  25.        Call CerrarADO
  26.     '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
  27.    
  28.     Me.MousePointer = 0
  29.  
  30. End Sub


Esta forma nunca me fallo.
« última modificación: Junio 14, 2012, 12:21:45 am por E N T E R »
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2851
  • Reputación: +159/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Se desconecta MySQL
« Respuesta #7 en: Junio 14, 2012, 02:32:14 am »
Es que en realidad siempre vas a tener que hacerlo, no imagina que lo tenes abierto por 3 dias, vos te pensas que la conexion va a durar? :P siempre tienes que estar abriendo y cerrando ante ese error :P

No pues, 3 días también es una exageración innecesaria, pero también 2 o 3 segundos lo es. Por supuesto que se cerraría la conexión cuando cierre el programa obviamente. La mejor solución debiera ser que sea posible que yo defina el tiempo de cuanto tiempo quiero mantenerlo abierto, con 5 minutos al menos me basta que seria la suficiente para hacer algunas operaciones, pero ya no hay roche si las cosas son asi normal pues que asi sea no hay trauma, por cada transacción abriré y cerrare tal como lo hace Ariel.
« última modificación: Junio 14, 2012, 02:34:30 am por YAcosta »
Me encuentras en YAcosta.com

raul338

  • Terabyte
  • *****
  • Mensajes: 896
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Se desconecta MySQL
« Respuesta #8 en: Junio 14, 2012, 10:24:11 am »
Si se que es una exageración, pero siempre existe esa posibilidad :P imagina algo que funcione 24 horas siempre de forma remota y sin que se sature su conexión a internet :P por eso muchos manejadores de base de datos en mysql tienen la reconección automatica

imacopez

  • Bit
  • Mensajes: 1
  • Reputación: +0/-0
    • Ver Perfil
Re:Se desconecta MySQL
« Respuesta #9 en: Enero 23, 2015, 11:18:36 am »
El error server has gone away, contraté un servidor dedicado y se modificó my.cnf de Mysql y aún así me da este error.-
Mi conexión es de 20Mb y lo hago con cable, wi-fi ....   
pero  al conectarme con mi Iphone no pasa nada de esto.

imacopez

Luffy

  • Kilobyte
  • **
  • Mensajes: 90
  • Reputación: +4/-2
  • Desarrollar es el arte de crecer no de crear.
    • Ver Perfil
Re:Se desconecta MySQL
« Respuesta #10 en: Enero 28, 2015, 04:10:35 pm »
Creo que este enlace te puede dar una idea más clara de tu option = 3 en el connectionstring de mysql

http://mirror.metrocast.net/mysql/doc/refman/5.0/es/myodbc-configuration-connection-parameters.html

Pero esto ya lo habia explicado yo, es como configuras tu servidor y tu cliente, osea puedes tener un servidor "DEDICADO" y configurar tu cliente "DEDICADO" tal y como tu quieres.

Pero lo mejor es hacerlo transaccional o por transacción para no saturar el puerto ni la base de datos. Es cuestión de gustos.

ssccaann43

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 969
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:Se desconecta MySQL
« Respuesta #11 en: Enero 31, 2015, 11:43:31 am »
Yvan, tanto que insistí en que no me pasa, pues me sucedió, desarrolle un soft para un cliente, para realizarle mantenimiento a sus Maquinarias, Equipos y Vehículos, y ciertamente después de unos segundos el Server cerro la conex. Tuve que optar por cerrar y abrir la conex constantemente, no es lo mejor pero para estos casos te quita el dolor de cabeza... Créeme.... Saludos a todos...
Miguel Núñez.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2851
  • Reputación: +159/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Se desconecta MySQL
« Respuesta #12 en: Enero 31, 2015, 06:20:33 pm »
Yvan, tanto que insistí en que no me pasa, pues me sucedió, desarrolle un soft para un cliente, para realizarle mantenimiento a sus Maquinarias, Equipos y Vehículos, y ciertamente después de unos segundos el Server cerro la conex. Tuve que optar por cerrar y abrir la conex constantemente, no es lo mejor pero para estos casos te quita el dolor de cabeza... Créeme.... Saludos a todos...

No, si te creo doctor, como lo dije alla en el 2012 me quedaba claro que asi era de cuando a hosting nos referimos... cosa diferente de cuando te conectas a la BD de una PC remota, alli si hago la conexion una vez y la cierro al final porque segun experiencia con el motor que tengo va de 10.
Me encuentras en YAcosta.com