C3P0连接问题

来源:互联网 发布:3055 知乎 编辑:程序博客网 时间:2024/05/17 05:09

今天写的一个项目需要更换数据库地址,项目框架是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

原创粉丝点击