Spring Boot auth-service 无法连接到 PostgreSQL 服务器

问题描述 投票:0回答:1

我正在开发一个包含身份验证服务模块的 Spring Boot 应用程序。 auth-service 配置为连接到 PostgreSQL 数据库,但我遇到应用程序无法建立连接的问题。

这是 auth-service 的 application.yml 文件:

yaml
Copy code
spring:
  datasource:
    url: jdbc:postgresql://${SPRING_DATASOURCE_HOST:postgres}:5432/${SPRING_DATASOURCE_DB:emergency_db}
    username: ${SPRING_DATASOURCE_USERNAME:admin}
    password: ${SPRING_DATASOURCE_PASSWORD:admin911}
    driver-class-name: org.postgresql.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
    properties:
      hibernate:
        format_sql: true
        dialect: org.hibernate.dialect.PostgreSQLDialect
  flyway:
    url: jdbc:postgresql://${SPRING_DATASOURCE_HOST:postgres}:5432/${SPRING_DATASOURCE_DB:emergency_db}
    user: ${SPRING_DATASOURCE_USERNAME:admin}
    password: ${SPRING_DATASOURCE_PASSWORD:admin911}
    locations: classpath:db/migration
    enabled: true
    baseline-on-migrate: true
    validate-on-migrate: false

以下是 Docker Compose 文件的相关摘录:

yaml
Copy code
services:
  auth-service:
    environment:
      SPRING_DATASOURCE_HOST: postgres
      SPRING_DATASOURCE_DB: emergency_db
      SPRING_DATASOURCE_USERNAME: admin
      SPRING_DATASOURCE_PASSWORD: admin911
  postgres:
    environment:
      POSTGRES_DB: emergency_db
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: admin911

当我尝试启动 auth-service 时,它无法连接到 PostgreSQL 服务器并抛出以下错误:

vbnet org.springframework.beans.factory.BeanCreationException:错误 创建类路径中定义的名为“flywayInitializer”的 bean 资源 [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: 无法从数据库获取连接:连接尝试 失败了。

错误消息表明 auth-service 无法连接到位于 postgres:5432 的 PostgreSQL 服务器。

我尝试过的: 已验证 application.yml 文件中的 PostgreSQL 连接详细信息是否正确。 检查 PostgreSQL 服务器状态并确认其正在运行并接受连接。 使用 psql 等客户端工具测试 PostgreSQL 连接并能够成功连接。 检查了 Docker Compose 日志中是否有任何网络或 DNS 相关问题,但没有发现任何问题。 尝试在 application.yml 文件中使用 PostgreSQL 服务器的 IP 地址而不是 postgres 主机名,但问题仍然存在。 预期行为: auth-service 应该能够成功连接到 PostgreSQL 服务器并执行其数据库操作。

实际行为: auth-service 无法连接到 PostgreSQL 服务器,应用程序无法启动。

database postgresql spring-boot docker
1个回答
0
投票

如果您使用的是最新版本的 PostgreSQL,则可能会由于时区不匹配而出现此问题。请求机器和PostgreSQL服务器的时区可能不同。我建议检查 PostgreSQL 中的时区设置,看看它们是否与您系统的时区不同。您可以更改数据库中的时区或相应地调整计算机的设置。 下面是一个示例查询,您可以使用它来检查 PostgreSQL 中的当前时区:

在 PGAdmin 中查询检查时区

 SHOW timezone;

更改 PGAdmin 中的时区

ALTER DATABASE your_database SET timezone TO 'your_timezone';

我认为这可能会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.