java連接mysql會出現的問題及解決方法
阿新 • • 發佈:2019-04-09
ber 有效 rop 穩定性 配置 interact dia active 溢出 java代碼連接mysql數據庫的時候一般在空閉8個小時的時候會自動斷開數據庫與程序代碼的連接,如果在斷開連接之後,我們再次去訪問時候程序就會報錯,出現空指針,這樣說可以不是很直白,我舉個例子就比較清楚了,我們經常看見我們的項目上線後白天可以正常訪問,但是再到明天就不能訪問了,那我們解決這個問題方法有兩種,下面就來講一下這兩種方法。
interactive_timeout=28800000
wait_timeout=28800000
我們這樣就可以把空閉的時間設置到更大
取方法的好處就是一勞永逸,所以的項目都有效果,但是不是連接池連接,效果會差一些,內存有時候會溢出。 <!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">密碼</property>
<property name="hibernate.connection.url">jdbc:mysql:///url</property>
<property name="hibernate.connection.username">用戶名</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider </property>
<property name="c3p0.min_size">100</property>
<property name="c3p0.max_size">120</property>
<property name="c3p0.timeout">120</property>-->
<property name="c3p0.idle_test_period">3000</property>
</session-factory>
</hibernate-configuration>
用方法要註意一個問題,就是c3po有時候數據庫會回滾,所以需要再設置下面關鍵的信息。
<property name="c3p0.testConnectionOnCheckout">true</property>
取方法好處就是不需要配置服務器,有時候只是購買空間,就辦法使用第一種方法,而且這樣每個項目都有一個單獨連接池,不會讓其它項目幹擾到這個項目,內容也不容易溢出,所以項目建議使用第二種方法。
解決方法一
就是修改mysql的配置文件,讓其空閉的時候更多。
inux下打開/etc/my.cnf,在屬性組mysqld下面添加參數如下:
[mysqld]
interactive_timeout=28800000
wait_timeout=28800000
windows下打開my.ini,增加:
wait_timeout=28800000
我們這樣就可以把空閉的時間設置到更大
取方法的好處就是一勞永逸,所以的項目都有效果,但是不是連接池連接,效果會差一些,內存有時候會溢出。
解決方法二
我們就是把數據庫連接方法改為C3po連接池連接,我們推薦用這種方法去連接數據庫,因為它會自動去檢測是否斷開,如果斷開就重新連接,好處比較多,穩定性高。
些方法,需要用到兩個jar包,c3p0-oracle-thin-extras-0.9.2.1.jar,c3p0-0.9.2.1.jar大家直接網上下載就可以了。
下面就是hibernate連接c3po的方法
<?xml version="1.0" encoding="UTF-8"?>
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///url</property>
<property name="hibernate.connection.username">用戶名</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider </property>
<property name="c3p0.min_size">100</property>
<property name="c3p0.max_size">120</property>
<property name="c3p0.timeout">120</property>-->
<property name="c3p0.idle_test_period">3000</property>
</session-factory>
</hibernate-configuration>
用方法要註意一個問題,就是c3po有時候數據庫會回滾,所以需要再設置下面關鍵的信息。
<property name="c3p0.testConnectionOnCheckout">true</property>
取方法好處就是不需要配置服務器,有時候只是購買空間,就辦法使用第一種方法,而且這樣每個項目都有一個單獨連接池,不會讓其它項目幹擾到這個項目,內容也不容易溢出,所以項目建議使用第二種方法。
深圳網站建設請添加鏈接描述https://www.sz886.com/請添加鏈接描述
java連接mysql會出現的問題及解決方法