我有一个Sping Boot 项目,我试图连接到一个本地PostgreSQL数据库。数据源是从DataSourceBuilder示例化的。在本例中,我将数据库用户名、密码和数据库URL硬编码(它们将通过属性文件传递),实现如下所示:
String url = "jdbc:postgresql://localhost:5433/<TABLENAME>";
String username = <USERNAME>;
String password = <PASSWORD>;
return DataSourceBuilder
.create()
.driverClassName("org.postgresql.Driver")
.url(url)
.username(username)
.password(password)
.build();
当我运行Spring Application main方法时,抛出了以下异常:
Caused by: org.postgresql.util.PSQLException:
The server requested password-based authentication, but no password was provided.
at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:534)
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:141)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)
我试着用sudo passwd postgres
修改了几次 postgres 用户密码,但是好像不起作用。
2条答案
按热度按时间r7xajy2e1#
我的猜测是,您没有将bean注入到Spring容器中,因此可以使用如下代码:
顺便说一句,在jdbcUrl中,您需要使用DatabaseName,而不是TableName。
注意:我认为最好利用Sping Boot 已经自动配置了所有内容的方式,所以我建议您这样做:
并使用以下属性:
你可以在这里查看我的一个工作示例:https://github.com/vladucuvoican/simple-blog/blob/master/src/main/resources/application.properties
t9aqgxwy2#
问题可能是由bean扫描引起的
我有同样的问题,但日志没有指出这一点。
试试看:
如果使用SpringBoot,请使用SpringBootApplication runner移动到包中,或者手动定义扫描