繁体   English   中英

HikariPool-2 - 池初始化期间的异常

[英]HikariPool-2 - Exception during pool initialization

首先,我想说这个主题可能与其他主题有关,但我找不到针对此特定错误的解决方案。 请记住,仅当我在 Dockerfile 阶段和 CI 上执行我的./mvnw test时才会发生此错误。

Dockerfile:

FROM eclipse-temurin:18.0.2.1_1-jdk-alpine AS test
ENV spring_profiles_active=test
ENV APP=/home/fvapi
WORKDIR $APP
COPY pom.xml mvnw ./
COPY .mvn .mvn
COPY src src
RUN ./mvnw test

在 CI 上,它只是克隆 repo 并执行相同的./mvnw test

错误是一个循环,你可以在这里看到它: https://pastebin.com/ar5BPXvp

我认为这里的要点是:

2022-09-14 04:05:46.254  INFO 131 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Starting...
     2022-09-14 04:06:17.298 ERROR 131 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-2 - Exception during pool initialization.
     
     com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

I have already tried looking for anything related to both HikariPool-2 - Exception during pool initialization , loop HikariPool-2 - Starting and to the com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure , but I found nothing relevant.

我也试过这些application.properties

spring.datasource.url=jdbc:mysql://DATABASE_URL_FROM_AWS_RDS/dbname
spring.datasource.username=admin
spring.datasource.password=password
spring.datasource.platform=mysql

spring.jpa.show_sql=true
spring.jpa.properties.hibernate.format_sql=true

并且

spring.datasource.url=jdbc:mysql://DATABASE_URL_FROM_AWS_RDS/dbname?useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=admin
spring.datasource.password=password
spring.datasource.platform=mysql

spring.jpa.show_sql=true
spring.jpa.properties.hibernate.format_sql=true

有人可以给我一盏灯吗?

PS:此错误仅在使用 docker 和 CI 运行时发生。 如果我在本地尝试,它可以工作。

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

问题很可能与访问数据库有关。 在初始化时 Spring 使用验证查询验证数据库,从 Hikari 池获取连接。 后者又无法连接数据库。 您需要仔细检查您实际尝试连接的主机和端口以及 CI 中 MySQL 公开的端口。 从您的application.properties我看到您根本没有指定端口

spring.datasource.url=jdbc:mysql://DATABASE_URL_FROM_AWS_RDS/dbname

spring.datasource.url=jdbc:mysql://DATABASE_URL_FROM_AWS_RDS:DATABASE_PORT_FROM_AWS_RDS/dbname

所以,我发现我们的 CI 无法访问我们的 AWS RDS 实例,这就是无法在 CI 上运行测试的原因。 在本地它不起作用,因为容器达到了访问 RDS 的超时时间,如果我尝试使用localhost ,它没有指向主机 ip,因为 docker 内的localhost是容器本身,而不是主机。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM