ITEEDU

8.3.4.3. 禁用mysql自动连接

如果mysql客户程序发送查询时断开与服务器的连接,它立即并自动尝试重新连接服务器并再次发送查询。然而,即使mysql重新连接成功,你的第1个连接也已经结束,并且以前的会话对象和设定值被丢失:包括临时表、自动提交模式,以及用户和会话变量。该行为很危险,如下面的例子所示,服务器将在你不知道的情况下关闭并重启:

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)

@a用户变量已经随连接丢失,并且重新连接后它也没有定义。如果有必要在连接断开时终止mysql并提示错误,你可以用--skip-reconnect选项启动mysql客户程序。