java - H2 数据库(嵌入式)连接超时

标签 java database h2

连接数据库时出现以下异常:

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

出现这种异常的原因是什么?

谢谢!

最佳答案

对于 h2 默认连接池大小为 10,登录超时为 30 秒,如果我们长时间获取 10 个并发连接,则新请求获取连接将超时。 对于我的案例,发现由于代码错误,连接没有关闭。我们可以增加最大连接数。

connectionPool.setMaxConnections(20);

但默认情况下,数据库管理器是单线程的,因此更多的连接不会获得任何性能。

关于java - H2 数据库(嵌入式)连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4437153/

相关文章:

jdbc - H2 - CREATE TABLE 创建了错误的数据类型

java - 尝试在数据库中保存新实体,但生成的 ID 为空

Java 7 的 fork/join 框架没有使用所有可用的 CPU 能力

java - Jframe 到 Jframe 变量

python - 在 django 中预取有限数量的相关对象

java - mybatis-spring中如何使用@Transactional注解?

java - 将带引号的 Java 字符串拆分为不带引号的参数

java - Android studio - 带Retrofit2的外汇汇率API,无法运行应用程序

javascript - ajax setInterval效率

h2 - 在H2中创建一个可以连接数据库的用户