使用了c3p0的連接池,在建立連接時,c3p0會在資料庫連接一張test表,用來驗證連接。 現在情況是 由於其他應用先前也在這個庫建立了一張test表,用來存儲業務數據,結果c3p0無法新建一張表來處理連接。 報錯截圖: 所以每次查詢時,雖然用戶名、密碼等所有連接信息都正確。也會因為test表的問題 ...
使用了c3p0的連接池,在建立連接時,c3p0會在資料庫連接一張test表,用來驗證連接。
現在情況是 由於其他應用先前也在這個庫建立了一張test表,用來存儲業務數據,結果c3p0無法新建一張表來處理連接。
報錯截圖:
所以每次查詢時,雖然用戶名、密碼等所有連接信息都正確。也會因為test表的問題無法執行查詢。
解決辦法:修改c3p0的配置屬性
將testConnectionOnCheckin 改為false 或者 automaticTestTable修改為其他未使用的表名
<bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource" > <property name="driverClass" value="${db.driverClassName}" /> <property name="jdbcUrl" value="${db.url}" /> <property name="user" value="${db.username}" /> <property name="password" value="${db.password}" /> <property name="maxPoolSize" value="${c3p0.max_size}" /> <property name="minPoolSize" value="${c3p0.min_size}" /> <property name="initialPoolSize" value="${c3p0.initial_pool_size}" /> <property name="maxIdleTime" value="${c3p0.max_idle_time}" /> <property name="acquireIncrement" value="${c3p0.acquire_increment}" /> <!-- 方法1:修改這裡的連接屬性為false -->
<property name="testConnectionOnCheckin" value="true"/> <!-- 方法2:修改test為其他在資料庫中未使用的表名 -->
<property name="automaticTestTable" value="test"/> </bean>