方法一
1。在mysql的命令模式下使用 mysql > select CURTIME(); 或 mysql > select now(); 看当前时间是否正确,可以看到mysql当前使用的是那一个时区的时间。2。在mysql命令行中更改时区 mysql > SET time_zone = '+8:00'; # 此为北京时,我们所在东8区 mysql> flush privileges; # 立即生效此时mysql时区已更改正确,与系统时区都使用为 Shanghai时间了。#### 这种方法好像只能在终端上使用,退出终端后时间又会变成原来的,看来只能重启mysql了。3。重启mysql也应没有问题,此时mysql会主动读取系统时间。方法二:如果mysql数据库可以重启,直接重启,mysql应可以立即主动读取系统时间,如果不行则更改mysql的配置文件(mysql.cnf)在my.cnf的 [mysqld]区域中加上default-time_zone = '+8:00' #此为北京时。查看mysql的运行时长SHOW GLOBAL VARIABLES LIKE '%timeout'2. 连接超时如果程序使用的是长连接,则这种情况的可能性会比较大。即,某个长连接很久没有新的请求发起,达到了server端的timeout,被server强行关闭。此后再通过这个connection发起查询的时候,就会报错server has gone away$ mysql -uroot -p -e "show global variables like '%timeout';"3. 进程在server端被主动kill这种情况和情况2相似,只是发起者是DBA或者其他job。发现有长时间的慢查询执行kill xxx导致。$ mysql -uroot -p -e "show global status like 'com_kill'"4. Your SQL statement was too large.当查询的结果集超过 max_allowed_packet 也会出现这样的报错。定位方法是打出相关报错的语句。用select * into outfile 的方式导出到文件,查看文件大小是否超过 max_allowed_packet ,如果超过则需要调整参数,或者优化语句。mysql> show global variables like 'max_allowed_packet';