問題原因
mysql預設是自動關閉空閒超過8小時的連線,而c3p0並不知道該connection已經失效,如果這時有client請求connection,c3p0將該失效的connection提供給client,將會造成異常。重啟tomcat操作會使c3p0重新建立和資料庫的連線池,且池內的連線都是有效的連線。解決方法
c3p0要在8小時內關閉不使用的連線。這需要修改其中的一些配置引數,主要是maxidletime和idleconnectiontestperiod。這兩個引數的值要小於28800秒。建議配置如下:
name="hibernate.c3p0.validate">trueproperty>
name="hibernate.c3p0.idle_test_period">18000property>
name="hibernate.c3p0.timeout">25000property>
附上在 hibernate中配置c3p0的關鍵字
c3p0.acquireincrement hibernate.c3p0.acquire_increment
c3p0.idleconnectiontestperiod hibernate.c3p0.idle_test_period
c3p0.maxidletime hibernate.c3p0.timeout
c3p0.maxpoolsize hibernate.c3p0.max_size
c3p0.maxstatements hibernate.c3p0.max_statements
c3p0.minpoolsize hibernate.c3p0.min_size
hibernate mysql寫入中文亂碼 解決
啟動hibernate專案,自動建立表,插入資料之後發現寫入表裡的資料裡的中文是亂碼。按如下方法解決了 修改資料庫的字符集為utf 8,這個可以通過mysql的客戶端軟體裡右鍵要修改的資料庫的屬性更改。修改client預設字符集為utf8。windows下在mysql安裝目錄 我的計算機作業系統是w...
hibernate mysql寫入中文亂碼
啟動hibernate專案,自動建立表,插入資料之後發現寫入表裡的資料裡的中文是亂碼。按如下方法解決了 修改資料庫的字符集為utf 8,這個可以通過mysql的客戶端軟體裡右鍵要修改的資料庫的屬性更改。或者在命令列裡面建立資料庫的時候指定字符集。修改client預設字符集為utf8。windows下...
解析Hibernate MySQL中文亂碼問題
如果是windows系統,那麼系統預設的本地字符集是gb2312,為了讓資料表也使用gnlgovcxb2312字程式設計客棧符集,我們要這樣編寫建立資料表的sql語句 複製 如下 create table test default char程式設計客棧acter set gb2312 然後在hibe...