Si el cliente mysql pierde la conexión al enviar una consulta, inmediatamente y de forma automática trata de reconectar una vez con el servidor y envía la consulta de nuevo. Sin embargo, incluso si mysql tiene éxito al reconectar, la primera conexión ha terminado y todos los objetos de sesión previos y opciones se pierden: tablas temporales, modo "autocommit", y variables de usuario y de sesión. Este comportamiento puede ser problemático, como en el siguiente ejemplo, donde el servidor se apaga y reinicia sin conocimiento del usuario:
mysql> SET @a=1; Query OK, 0 rows affected (0.05 sec) mysql> INSERT INTO t VALUES(@a); ERROR 2006: MySQL server has gone away No connection. Trying to reconnect... Connection id: 1 Current database: test Query OK, 1 row affected (1.30 sec) mysql> SELECT * FROM t; +------+ | a | +------+ | NULL | +------+ 1 row in set (0.05 sec)
La variable de usuario @a
se ha perdido con
la conexión, y tras la reconexión no está definida. Si es
importante que mysql termine con un error
cuando se pierda la conexión, puede arrancar el cliente
mysql con la opción
--skip-reconnect
.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.