解決方法
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;