我正在开发一个包含身份验证服务模块的 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 服务器,应用程序无法启动。
SHOW timezone;
ALTER DATABASE your_database SET timezone TO 'your_timezone';
我认为这可能会有所帮助。