java - 无法创建池的初始连接,无法获取 JDBC 连接错误
问题描述
我有一个 Spring Boot 数据 JPA 应用程序,我正在其中创建两个数据源。我的应用程序启动时出现此错误。
1. org.apache.tomcat.jdbc.pool.ConnectionPool init
SEVERE: Unable to create initial connections of pool.
java.sql.SQLException
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:253)
2. Caused by: java.lang.NullPointerException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:245)
... 88 more
3. Jan 20, 2020 7:39:29 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: null
[http-bio-8080-exec-1] ERROR org.springframework.boot.web.support.ErrorPageFilter - Forwarding to error page from request [/orderForDateTopK/1/2] due to exception [Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection]
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:431)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373)
4. Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1692)
5. Caused by: org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection
解决方案
您正在为数据源使用Tomcat JDBC 连接池,但在您为Hikariapplication.properties
数据源配置的连接池中。
datasource
由于连接池设置,您没有很好地实例化。
你的错误配置:
#HikariCP settings
spring.datasource.hikari.connection-timeout=60000
spring.datasource.hikari.maximum-pool-size=15
spring.datasource.hikari.minimum-idle=1
您有 2 个解决方案
1-将连接池设置从 hikari 更改为 tomcat
像这样
spring.datasource.tomcat.initial-size=
spring.datasource.tomcat.max-wait=
spring.datasource.tomcat.max-active=
spring.datasource.tomcat.max-idle=
spring.datasource.tomcat.min-idle=
spring.datasource.tomcat.default-auto-commit=
//..
该领域的一些有用指南:
2- 使用Hikari 连接池而不是tomcat(更改数据源连接池)
该领域的一些有用指南:
推荐阅读
- excel - Documents.Open gives 'Locked for editing' error while document is closed
- html - Full width container text box in bootstrap
- optimization - 搜索 MILP 约束以防止整数变量的交替
- c# - 在连接服务器上的do目录期间设置超时
- java - 如何在 Java 中反转数组
- vhdl - Using DCM Locked output in Spartan 3 FPGA
- c++ - 使用 Opencv 将姿势值实时写入文本文件
- python - python msrestazure 包抛出隧道连接失败错误
- c# - 将工作流构建到现有应用程序中
- java - Spring Boot Test:根据活动配置文件在测试中执行不同的 sql 脚本?