sql >> Base de Datos >  >> RDS >> Mysql

Al intentar actualizar 640k filas en mySQL, se pierde la conexión con el servidor MySQL durante la consulta

Hay otra posible razón para este error, y es el conjunto de conexiones de ActiveRecord segador . Cuando está habilitado, el segador escanea el grupo de conexiones en busca de conexiones "muertas" y las cierra. En mis pruebas, parece ser demasiado entusiasta y también cierra conexiones perfectamente activas (generalmente las que ejecutan consultas un poco más grandes).

Intenta borrar reaping_frequency desde su configuración de base de datos (que lo apaga) y vea si eso ayuda. Escanee su base de código en busca de esa cadena y asegúrese de que no esté configurada (¡o simplemente eliminada!). Si ve una línea como config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10 , sepa que el || 10 en realidad está configurando un valor predeterminado bajo de 10 segundos. Este patrón estuvo en el código base de Rails durante un tiempo, hasta que el cambio fue revertido debido a que causa varios problemas, incluido matar consultas de ejecución prolongada , pero sigue siendo recomendado por Heroku .

Si deshabilitar el segador arregla las cosas, recomendaría dejarlo deshabilitado. Rails ya no lo establece de forma predeterminada y parece causar más problemas de los que resuelve.

Tuve un error como el tuyo, y así fue como lo solucioné. Personalmente, lo mantengo deshabilitado. Escribí sobre mi problema específico con más detalle en mi blog .