Como los otros contribuyentes a este hilo han dicho, Lo más probable es que el servidor MySQL haya cerrado la conexión a su aplicación Ruby on Rails debido a la inactividad. El tiempo de espera predeterminado es 28800 segundos u 8 horas.
set-variable = wait_timeout=86400
La adición de esta línea a su /etc/my.cnf
aumentará el tiempo de espera de 24 horas http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#option_mysqld_wait_timeout.
Aunque la documentación no indica que, un valor de 0 puede desactivar por completo el tiempo de espera, pero que tendría que experimentar ya que esto es sólo especulación.
Sin embargo, hay otras tres situaciones que conozco que pueden generar ese error. El primero es el servidor MySQL que se reinicia.Obviamente, esto soltará todas las conexiones, pero como el cliente MySQL es pasivo, no se notará hasta que realices la siguiente consulta.
La segunda condición es si alguien elimina su consulta de la línea de comandos de MySQL, y esto también deja de estar conectada, ya que podría dejar al cliente en un estado indefinido.
El último es si su servidor MySQL se reinicia debido a un error interno fatal. Es decir, si está haciendo una simple consulta en una tabla y ve instantáneamente 'MySQL se ha ido', examinaría de cerca los registros de su servidor para verificar si hay errores de hardware o corrupción de la base de datos.
Sí; Pasé el problema al capturar 'ActiveRecord :: StatementInvalid' una vez y al llamar manualmente' ActiveRecord :: Base.verify_active_connections! 'Cuando me encontré con esto. – conny
@Conny, ¿a dónde va 'ActiveRecord :: StatementInvalid'? en 'application_controller.rb'? ¿O en otro lugar? –
@ChristianFazzini, esto fue dentro de un daemon independiente que cumplía un propósito específico de la aplicación: nunca tuve este problema dentro de una simple aplicación web de Rails. Si tuviera, ahora estaría usando Rails 2.3 o posterior y usaré la opción de reconexión [según lo propuesto por mixonic] (http://stackoverflow.com/a/1175186/23023) – conny