C3P0連接問題

今天寫的一個項目需要更換數據庫地址,項目框架是SSH,數據庫連接用的是c3p0,結果換了數據庫連接地址、用戶名、密碼之後始終連接不上數據庫(確認連接信息和數據庫本身沒有問題),然後日誌信息爲:

信息: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 5, acquireRetryAttempts -> 0, acquireRetryDelay -> 1000000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> h4qly89seldn7schml8v|603698f, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> h4qly89seldn7schml8v|603698f, idleConnectionTestPeriod -> 1800, initialPoolSize -> 5, jdbcUrl -> jdbc:mysql://120.27.76.193:3360/wpwemall, lastAcquisitionFailureDefaultUser -> null, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 1800, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 20, maxStatements -> 10, maxStatementsPerConnection -> 0, minPoolSize -> 5, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> select id from user where id=1, properties -> {user=******, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> true, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ]

後來在網上找了好多都是出現這個問題,但是都沒有解決辦法

最終發現c3p0的配置中有一個定義連接的測試語句

c3p0.preferredTestQuery=select id from user where id=1

發現該測試語句指定的是user表,而我換的新的數據庫中沒有這個測試的數據表,最終導致了上面的現象

其實只要將這句話該爲默認的即可

mysql:  select 1 
oracle:  select 1 from dual

發佈了21 篇原創文章 · 獲贊 13 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章