在部署專案的時候往往會忽略這個問題,那就是mysql的自我保護機制,8小時之內沒有應用程式和資料庫之間沒有任何的通訊,資料庫就斷掉與應用程式之間的通訊,資料庫會進入與應用程式之間的假死狀態……,所以就有了常說的8小時問題(至少當時作為菜鳥的我是遇見了)解決方法有兩個:
第一種方法就是修改mysql,當時查資料《mysql5 管理員手冊》裡面說 mysql的timeout時間預設是28800秒,也就是8小時,增加乙個0就沒問題了。 及在mysql介面裡面輸入mysqld-nt --default-table-type=innodb --interactive_timeout=288000。
如果是mysql5以前的版本,需要修改連線池配置中的url,新增autoreconnect=true
如果是mysql5 以後的版本,需要修改my.cnf(或者my.ini)檔案,在[mysqld]後面新增
wait_timeout = 172800
interactive-timeout = 172800
單位都是秒,記得必須都新增,否則不起作用,通過show variables檢視wait_timeout的值。
第二種方法是在系統中做相應的配置,這種配置又分為兩種,一種是傳統的在系統中寫定時檢查連線的檔案,另外一種就是交給伺服器,讓伺服器來完成。先說第一種吧,我當時用的是c3p0鏈結池(因為當時還很崇尚hibernate),就是把3p0.testconnectiononcheckout設定為true,然後將c3p0.preferredtestquery設定為"select id from users where id=1"(users是我在專案中使用者表,你也可以根據自己的實際換其他的表,但是查詢的資料必須存在,*在附件中附上c3p0的常用屬性)。第二種,jndi,其他的都差不多,及其他的就不多做解釋了,因為都很簡單的東西,很多都是官方文件上面有的
在mysql中處理時間問題
mysql有很多函式可以處理日期和時間,提高工作效率。注意,盡量使用標準格式的日期,如 2018 01 01 或者 2018 01 01 00 00 00 timestampdiff函式 第一種 timestampdiff函式,需要傳入三個引數,第乙個是比較的型別,可以比較frac second s...
如何在mysql中處理時間問題?
mysql有很多函式可以處理日期和時間,提高工作效率。注意,盡量使用標準格式的日期,如 2018 01 01 或者 2018 01 01 00 00 00 第一種 timestampdiff函式,需要傳入三個引數,第乙個是比較的型別,可以比較frac second second minute hou...
MySQL語法大全(3)時間問題
1.mysql 為日期增加乙個時間間隔 date add set dt now select date add dt,interval 1 day 加1天 select date add dt,interval 1 hour 加1小時 select date add dt,interval 1 mi...