【发布时间】:2022-02-03 03:19:11
【问题描述】:
由于spring boot 测试失败,我无法构建spring boot 应用程序。我没有包括任何测试。 spring boot 创建了一个用@SpringBootTest 注释的测试类。当我在application.properties 中有数据库配置时,它工作正常。我删除了硬编码的值并将其添加为 intelliJ 中的环境变量并使用了占位符,例如:
spring.datasource.url=jdbc:postgresql://${DB_HOST:dbhost}:${DB_PORT:5432}/${DB_NAME}
我尝试使用@PropertySource("classpath:application.properties"),但没有成功。
应用程序在从 IntelliJ 启动时无任何异常启动。问题仅在于运行 mvn clean install 时测试失败。
例外
Caused by: org.postgresql.util.PSQLException: The connection attempt failed.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:315)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51)
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:225)
at org.postgresql.Driver.makeConnection(Driver.java:465)
at org.postgresql.Driver.connect(Driver.java:264)
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477)
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
... 120 common frames omitted
Caused by: java.net.UnknownHostException: dbhost
【问题讨论】:
-
为什么将变量定义为
key:pair值定义为${DB_HOST:dbhost}而不是这样的${DB_HOST}? -
@HarryCoder 是对的。检查
${DB_NAME}是否与您的 postgresql 数据库名称匹配? -
能否请您显示您的
environment variables有问题 -
dbhost 是一个占位符值,如果没有给定环境变量,Spring boot 会选择该值
标签: java spring spring-boot