解决方法
1.autoReconnect
这个参数表示在mysql超时断开连接后会自动重新连接
配置的话,只需要在连接mysql的语句写上autoReconnect=true
下面是MySQL官网对autoReconnect的解释:
同时可以看到官网不推荐使用这个参数,因为它有一些副作用
具体介绍下:
原有连接上的事务将会被回滚,事务的提交模式将会丢失
原有连接持有的表的锁将会全部释放
原有连接关联的会话Session将会丢失,重新恢复的连接关联的将会是一个新的会话Session
原有连接定义的用户变量将会丢失
原有连接定义的预编译SQL将会丢失
原有连接失效,新的连接恢复后,MySQL将会使用新的记录行来存储连接中的性能数据
wait_timeout指的是mysql在关闭一个非交互的连接之前所要等待的秒数
interactive_time 指的是mysql在关闭一个交互的连接之前所要等待的秒数
对于交互和非交互连接,说得直白一点就是,通过mysql客户端连接数据库是交互式连接,通过jdbc连接数据库是非交互式连接。
配置方法:
1.会话方式
msyql> set global wait_timeout=2880000;
msyql> set global interactive_timeout=2880000;
1
2
这种方式只对当前会话生效
2.修改配置文件方式
修改/etc/my.cnf文件,在 [mysqld] 节中设置:
wait_timeout=2880000
wait_timeout=2880000;