w3schools tutorial query mysqldb example python mysql pylons

tutorial - python mysqldb query



Error de Pilones-''El servidor MySQL se ha ido'' (2)

Creo que lo arreglé Resultó que tenía un error de configuración simple. Mi archivo ini decía:

sqlalchemy.default.url = [connection string here] sqlalchemy.pool_recycle = 1800

El problema es que mi archivo environment.py declaró que el motor solo pool_recycle claves con el prefijo: sqlalchemy.default por pool_recycle se ignoró pool_recycle .

La solución es simplemente cambiar la segunda línea en el ini para:

sqlalchemy.default.pool_recycle = 1800

[Espero que esto no sea demasiado oscuro ... Preguntaré al grupo de noticias si nadie sabe aquí]

Estoy usando Pylons (un framework de Python) para servir una aplicación web simple, pero parece morir de vez en cuando, con esto en el registro de errores: (2006, ''MySQL server has gone away'')

Hice un poco de comprobación y vi que esto se debía a que las conexiones con MySQL no se renovaban. Esto no debería ser un problema, porque sqlalchemy.pool_recycle en el archivo de configuración debería mantenerlo activo automáticamente. El valor predeterminado era 3600 , pero lo marqué nuevamente a 1800 debido a este problema. Ayudó un poco, pero 3600 debería estar bien según los documentos. Los errores todavía ocurren semi-regularmente. Aunque no quiero bajar demasiado y tengo mi propia base de datos :).

Tal vez algo en mi configuración de MySQL es tonto? No estoy seguro de dónde mirar exactamente.

Otros detalles relevantes:

Python 2.5 Pylons: 0.9.6.2 (w/ sql_alchemy) MySQL: 5.0.51


Es posible que desee comprobar las variables de tiempo de espera de MySQL:

show variables like ''%timeout%'';

Probablemente estés interesado en wait_timeout (menos probable pero posible: interactive_timeout ). En Debian y Ubuntu, los valores predeterminados son 28800 (MySQL elimina las conexiones después de 8 horas), pero tal vez el valor predeterminado para su plataforma es diferente o quien administra el servidor ha configurado las cosas de manera diferente.

AFAICT, pool_recycle realidad no mantiene las conexiones activas, expira por sí misma antes de que MySQL las mate. No estoy familiarizado con las torres de alta tensión, pero si las conexiones se hacen intermitentemente, haga una SELECT 1; es una opción que los mantendrá con vida a costa de, básicamente, no tener carga del servidor y un tráfico de red mínimo. Una última reflexión: ¿de alguna manera logras usar una conexión que los pilones piensan que ha expirado?