Java Hibernate / C3P0錯(cuò)誤:“無法獲取連接元數(shù)據(jù)客戶端嘗試檢出Connection的嘗試已超時(shí)”
如果您將C3P0的“ checkoutTimeout”屬性設(shè)置為非0的值,則可能是超時(shí)太快了(這是我的問題,解決方案:將其從500提高到2000毫秒)。
或者,有一種解決此警告的方法:
將hibernate.temp.use_jdbc_Metadata_defaults屬性設(shè)置為false。
在http://www.docjar.com/html/api/org/hibernate/cfg/SettingsFactory.java.html中可以找到此內(nèi)容,但是如果不使用Hibernate提取JDBCMetadata默認(rèn)值可能會(huì)產(chǎn)生副作用。
解決方法我正在嘗試獲取一些傳遞并運(yùn)行的代碼。它似乎使用了Hibernate框架。我已經(jīng)克服了調(diào)整配置時(shí)的大多數(shù)錯(cuò)誤,但這使我陷入了困境。
它正在嘗試連接到兩個(gè)數(shù)據(jù)庫(kù):gameapp和gamelog。兩者都存在。似乎有問題連接到gamelog,但沒有問題連接到gameapp(在init之后,它可以連接并加載其他數(shù)據(jù)庫(kù)就很好了)。在下面,我粘貼了錯(cuò)誤和異常堆棧轉(zhuǎn)儲(chǔ)。
我想像一下配置中還有其他內(nèi)容,所以我還包括了該數(shù)據(jù)庫(kù)的配置文件。我知道這很模糊,但是我希望一些專業(yè)人士可以看到我所缺少的愚蠢錯(cuò)誤。
<?xml version='1.0' encoding='GBK'?><!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='dialect'>org.hibernate.dialect.MySQLDialect</property><property name='connection.driver_class'>com.mysql.jdbc.Driver</property><property name='connection.url'>jdbc:mysql://127.0.0.1:3306/gamelog</property><property name='connection.username'>root</property><property name='connection.password'></property><property name='connection.useUnicode'>true</property> <property name='connection.characterEncoding'>UTF-8</property> <property name='hibernate.jdbc.batch_size'>100</property><property name='jdbc.fetch_size'>1</property><property name='hbm2ddl.auto'>none</property><!-- update --><property name='connection.useUnicode'>true</property><property name='show_sql'>true</property><!-- c3p0-configuration --><property name='hibernate.connection.provider_class'>org.hibernate.connection.C3P0ConnectionProvider</property> <property name='hibernate.c3p0.min_size'>5</property><property name='hibernate.c3p0.max_size'>10</property><property name='hibernate.c3p0.timeout'>30</property><property name='hibernate.c3p0.idle_test_period'>30</property><property name='hibernate.c3p0.max_statements'>0</property><property name='hibernate.c3p0.acquire_increment'>5</property> </session-factory></hibernate-configuration>
異常和堆棧跟蹤:
2010-04-30 17:50:00,411 WARN [org.hibernate.cfg.SettingsFactory] - Could not obtain connection metadatajava.sql.SQLException: An attempt by a client to checkout a Connection has timed out. at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106) at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:527) at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128) at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:35) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:76) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1933) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1216) at com.database.hibernate.util.HibernateFactory.<init>(Unknown Source) at com.database.hibernate.util.HibernateUtil.<clinit>(Unknown Source) at com.server.databaseop.goodOp.GoodOpImpl.initBreedGoods(Unknown Source) at com.server.databaseop.goodOp.GoodOpImpl.access$000(Unknown Source) at com.server.databaseop.goodOp.GoodOpImpl$1.run(Unknown Source) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:165) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:636)Caused by: com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResourcePool@ca470 -- timeout at awaitAvailable() at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1317) at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557) at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525) ... 18 more
相關(guān)文章:
1. node.js - mysql如何通過knex查詢今天和七天內(nèi)的匯總數(shù)據(jù)2. mysql 插入數(shù)值到特定的列一直失敗3. 360瀏覽器與IE瀏覽器有何區(qū)別???4. Python從URL中提取域名5. mysql - 百萬行的表中是否盡量避免使用update等sql語句?6. python - 在使用Pycharm時(shí)經(jīng)常看到如下的樣式,小括號(hào)里紅色的部分是什么意思呢?7. javascript - 新浪微博網(wǎng)頁(yè)版的字?jǐn)?shù)限制是怎么做的8. 怎么在網(wǎng)頁(yè)中設(shè)置圖片進(jìn)行左右滑動(dòng)9. javascript - 豆瓣的這個(gè)自適應(yīng)是怎么做的?10. javascript - 用jsonp抓取qq音樂總是說回調(diào)函數(shù)沒有定義
