连接数据库时出现以下异常:
org.h2.jdbc.JdbcSQLException: Connection is broken: "connect timed out" [90067-142]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
at org.h2.message.DbException.get(DbException.java:156)
at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:326)
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:248)
at org.h2.engine.SessionRemote.createSession(SessionRemote.java:214)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:111)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:95)
at org.h2.Driver.connect(Driver.java:73)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
................
Caused by: java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:525)
at org.h2.util.NetUtils.createSocket(NetUtils.java:109)
at org.h2.util.NetUtils.createSocket(NetUtils.java:91)
at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:92)
at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:322)
... 38 more
连接字符串如下所示:
jdbc:h2:C:\Users\Michael\.myadd\db;AUTO_SERVER=TRUE;CIPHER=AES
这种例外的原因是什么?
谢谢!
答案 0 :(得分:2)
对于h2,默认连接池大小为10,登录超时为30秒,如果我们获得10个同时连接更长时间,则获取连接的新请求将超时。 因为我的案例发现由于代码中的错误,连接没有被关闭。我们可以增加最大连接数。
connectionPool.setMaxConnections(20);
但默认情况下,db manager是单线程的,因此更多连接不会获得任何性能。
答案 1 :(得分:1)
我猜你看过docs about the automatic mixed mode?很难说问题是什么,因为对我来说它是有效的。你可以发布文件C:\ Users \ Michael.myadd \ db.lock.db的内容吗?对我来说(连接后):
#FileLock
#Tue Dec 14 22:29:22 CET 2010
id=12ce6c9a16a912077e514cc6fff231e91b09d2dbe43
method=file
server=192.168.0.126\:52068
这意味着数据库已打开,打开它的客户端在此IP地址和端口上启动了服务器。
答案 2 :(得分:0)
先重启电脑(^_^)/再启动
我尝试了所有方法,但似乎唯一有效的是重新启动我的计算机。
以下列出了不起作用的事情:
我什至可以在 H2 控制台中看到数据库工作正常,但 eclipse 直到我重新启动计算机才能连接到它。
我多次记录此错误: “连接:org.h2.jdbc.JdbcSQLNonTransientConnectionException:连接中断:”java.net.SocketTimeoutException:连接超时:...”
我在午饭前重新启动连接到数据库,并在我的电脑上工作了一个小时。午饭就睡了,下午又要重启电脑才能连接数据库。
其他评论是关于MaxConnections
,但我是唯一一个使用这个数据库的人。