Have you seen below lines are printed in the command line or log when your Springboot application is started.
Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)']
Database driver: undefined/unknown
Database version: 8.0.31
Autocommit mode: undefined/unknown
Isolation level: undefined/unknown
Minimum pool size: undefined/unknown
Maximum pool size: undefined/unknown
Solution
Solution: Fix HikariCP Configuration
1. Add Explicit JDBC URL & Driver Class
Update your application.yml
(or application.properties
) with complete database configuration:
spring: datasource: url: jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC username: your_username password: your_password driver-class-name: com.mysql.cj.jdbc.Driver hikari: pool-name: HikariPool-1 minimum-idle: 5 maximum-pool-size: 20 idle-timeout: 30000 max-lifetime: 2000000 connection-timeout: 30000 auto-commit: true transaction-isolation: TRANSACTION_READ_COMMITTED
2. Verify Dependencies
Ensure you have both MySQL driver and HikariCP in your pom.xml
:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.31</version> </dependency> <!-- HikariCP is included automatically with Spring Boot Starter Data JPA -->
3. Check Connection Pool Status
Add this to your application to log HikariCP status at startup:
import com.zaxxer.hikari.HikariDataSource; @SpringBootApplication public class MyApp { public static void main(String[] args) { SpringApplication.run(MyApp.class, args); } @Bean public CommandLineRunner checkDataSource(DataSource dataSource) { return args -> { if (dataSource instanceof HikariDataSource) { HikariDataSource hikari = (HikariDataSource) dataSource; System.out.println("HikariCP Config:"); System.out.println("JDBC URL: " + hikari.getJdbcUrl()); System.out.println("Driver: " + hikari.getDriverClassName()); System.out.println("Max Pool Size: " + hikari.getMaximumPoolSize()); System.out.println("Connection Timeout: " + hikari.getConnectionTimeout()); } }; } }
4. Common Fixes for Your Issues
Problem | Solution |
---|---|
Undefined driver | Explicitly set driver-class-name |
Undefined pool size | Configure spring.datasource.hikari.maximum-pool-size |
Undefined isolation level | Set spring.datasource.hikari.transaction-isolation |
Autocommit mode undefined | Configure spring.datasource.hikari.auto-commit |
5. For PostgreSQL Configuration
If switching to PostgreSQL:
spring: datasource: url: jdbc:postgresql://localhost:5432/your_db driver-class-name: org.postgresql.Driver hikari: maximum-pool-size: 15 connection-timeout: 5000
6. Verify Database Connectivity
Test your connection independently using:
try (Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/your_db", "user", "password")) { System.out.println("Connection successful!"); System.out.println("Autocommit: " + conn.getAutoCommit()); System.out.println("Isolation: " + conn.getTransactionIsolation()); } catch (SQLException e) { e.printStackTrace(); }
7. Enable HikariCP Debug Logging
Add to application.yml
:
logging: level: com.zaxxer.hikari: DEBUG
This will show detailed pool initialization and connection lifecycle events.
No comments:
Post a Comment