“MySQL server has gone away”的重现方法(PHP)

如果想调试“MySQL server has gone away”的问题,可以这样重现:

修改配置文件:

sudo vi /etc/mysql/my.cnf

做如下修改:

[mysqld]
wait_timeout = 30
interactive_timeout = 30

重启服务:

sudo /etc/init.d/mysql restart

编写如下php脚本



执行:

$ php mysql.php 
Connected successfully
Invalid query: MySQL server has gone away

或者在命令行下等30秒也可以看到这个错误了:

mysql> select variables like '%timeout';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    40
Current database: *** NONE ***

然后你就可以想干啥干啥了,比如加个mysql_ping让他实现自动重连:


另外,php文档里说mysql_ping可以自动重连,但经实验实际上还是需要用户自行处理重连的问题(也可能我的参数设置不对)。

如果使用的是C/C++,可以在连接建立后使用如下方法让mysql_ping具有自动重连功能:

char mysql_reconnect = 1; 
mysql_options(mysql->conn, MYSQL_OPT_RECONNECT, (char *)&mysql_reconnect);




你可能感兴趣的:(PHP,Linux,数据库)