我在SpringBoot中使用JPA进行应用。 当我丢失连接时,我的应用程序向我发送错误:
WARN 6812 --- [io-8080-exec-42] o.h.engine.jdbc.spi.SqlExceptionHelper:SQL错误:17002,SQLState:08006
ERROR 6812 --- [io-8080-exec-42] o.h.engine.jdbc.spi.SqlExceptionHelper:IO错误:套接字读取时间 出来
建立连接后,我无法使用我的EntityManager,因为我得到:
WARN 6812 --- [io-8080-exec-50] o.h.engine.jdbc.spi.SqlExceptionHelper:SQL错误:17008,SQLState:08003
ERROR 6812 --- [io-8080-exec-50] o.h.engine.jdbc.spi.SqlExceptionHelper:关闭连接
我的连接属性:
spring.datasource.driverClassName = oracle.jdbc.driver.OracleDriver
spring.datasource.url = jdbc:oracle:thin:@ ...:..:..
spring.datasource.username = ...
spring.datasource.password = ...
spring.datasource.test-on-borrow = true
spring.datasource.test-while-idle = true
spring.datasource.validation-query = SELECT 1;
如何重新连接该数据库连接?
答案 0 :(得分:0)
尝试添加外部连接池,例如HikariCP,因为Spring Boot会自动检测并使用它:
如果HikariCP可用,我们将使用它。
如果您使用JDBC4驱动程序,连接池将在将连接交给您之前验证连接。如果您使用的是较旧的驱动程序,则需要设置此属性:
<强> connectionTestQuery 强>
如果您的驱动程序支持JDBC4,我们强烈建议您不要设置它 属性。这适用于不支持JDBC4的“遗留”数据库 Connection.isValid()API。这是将要执行的查询 在从池中给出连接以验证之前 与数据库的连接仍然存在。再次尝试运行池 没有此属性,如果您的驱动程序是HikariCP将记录错误 不符合JDBC4,让你知道。默认值:无